わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

sedを使いこなそう

 問題の前にセッティングです.
 Linux(WSLも可)のコマンドラインを使用します.はじめに端末で以下のコマンドを順に実行し,week.txtを作成します.

echo Monday > week.txt
echo Tuesday >> week.txt
echo Wednesday >> week.txt
echo Thursday >> week.txt
echo Friday >> week.txt
echo Saturday >> week.txt
echo Sunday >> week.txt

 そのあと,sed -e 's/day/-day/' week.txt というコマンドを実行したとき,出力が次のようになる(各行の「day」が「-day」に変わる)のを確認します.

Mon-day
Tues-day
Wednes-day
Thurs-day
Fri-day
Satur-day
Sun-day

 sedを使用して,テキストファイルをさまざまに変換するための入門を,学生に体験してもらいます.そこで次の3問を用意したのですが,問2と問3について,出題意図を明確にするために指示を与えたいと考えました.どうすればいいでしょうか.

問1. sedを使用して,week.txtの中の「Monday」のみを「Mon-day」に変更して(他の行はそのまま)出力するような実行コマンドを解答しなさい.
問2. sedを使用して,week.txtの中の「Sunday」と「Saturday」を「Holiday」に変更して(他の行はそのまま)出力するような実行コマンドを解答しなさい.
問3. sedを使用して,week.txtの6行目を「Today」に変更して(他の行はそのまま)出力するような実行コマンドを解答しなさい.

 追加の指示をしなければ,問2は「6行目と7行目をHolidayに変更」,問3は「SaturdayをTodayに変更」と,誤解される可能性があるのです.
 といったところで,実際の授業では,問2の後ろに「実行コマンドに数字を含めてはならない.」を,問3の後ろには「実行コマンドに「6」を含めること.」を,指示しました.
 問1から問3までの解答はここでは書きません.いずれも正解となる実行コマンドが複数あります.元ネタは毎年1回,出題しているものです.出題内容を変えるためのバリエーションとして,week.txtの作り方についてMondayから始めるか,Sundayから始まるかの2通りがあります.「Today」は授業の曜日*1に設定しますし,「Due Date(期限日)」に変えることも可能です.

*1:毎週月曜日の授業ですが,今年度も昨年度も,大学の学年暦に従い,月曜日以外の授業でした.