sed awk
注意:以下の実行例中のスペース(空白)はコマンド、オプション、引数を見やすくするために挿入している。1つ以上のスペースは1つにまとめることができる。ただし、クウォートやダブルクウォートで囲まれた部分の空白の数は無視できないことに注意する。
まず、各自$HOME/UNIXclass
に移動して、ichoに用意した次のディレクトリの内容をコピーする。次に、今コピーしたディレクトリsedawk
に移動する。cpコマンドに"-r"オプションをつけるとディレクトリごとコピーできる。
----------------------------------------------------------------------------
icho% cd
icho% cd UNIXclass
icho% cp -r /home1/akira/SAMPLE/sedawk .
^^^
(最後のピリオドを忘れないこと)
icho% cd sedawk
icho% pwd (各自自分のホームディレクトリ下であることを確認すること)
----------------------------------------------------------------------------
コピーされるファイルは以下の通り。
正規表現に慣れよう
コピーしたディレクトリ下のファイルsamp1
を用いて、以下のようにgrep
コマンドを実行してそれらの動作を確認する。
----------------------------------------------------------------------------
icho% more samp1 # moreで内容を確認する。
icho% cat -n samp1 # -n オプションをつけると行番号も表示される。
icho% grep 'C.T' samp1
icho% grep '[Cc]ot' samp1
icho% grep -i 'C.T' samp1 # -i オプションをつけると大文字と小文字が
区別されなくなる。
icho% grep -in 'C.T' samp1 # -n オプションは行番号も表示する。
icho% grep -n '^$' samp1
----------------------------------------------------------------------------
正規表現に関する課題
以下の条件を満たすシェルスクリプトをそれぞれ作成せよ。ただし、使うコマンドはgrep
とする。
ファイルsamp1
から先頭が「cot」(大文字小文字は区別しない)で始まる行を検索し、行番号も出力するシェルスクリプトをex-1
というファイル名で作成せよ。
ファイルsamp1
から末尾が「t」(大文字小文字は区別しない)で終わる行を検索し、行番号も出力するシェルスクリプトをex-2
というファイル名で作成せよ。
sedに慣れよう
コピーしたディレクトリ下のファイルsamp2
を用いて、以下のようにsed
コマンドを実行しそれらの動作を確認する。
----------------------------------------------------------------------------
icho% more samp2 # moreで内容を確認する。
icho% cat -n samp2 # -n オプションをつけると行番号も表示される。
icho% sed 's/UNIX/Linux/' samp2
icho% sed -n '5,7p' samp2
icho% sed '2,13d' samp2
icho% sed -e 's/UNIX/Linux/' -e 's/MSDOS/Windows/' samp2
icho% sed -n -e 's/UNIX/Linux/p' -e 's/MSDOS/Windows/p' samp2
icho% sed -n -e '/UNIX/w out1' -e '/UNIX/\!w out2' samp2
----------------------------------------------------------------------------
sedに関する課題
以下の条件を満たすシェルスクリプトをそれぞれ作成せよ。ただし、使うコマンドはsed
とする。
ファイルsamp2
の中には「UNIX」という文字列がいくつか含まれているが、行の先頭に「UNIX」と書かれているもののみ「Linux」に変換するシェルスクリプトをex-3
という名前で作成せよ。
ファイルsamp2
の中の「UNIX」という文字列を「Linux」に変換し、かつ、変換した行だけを出力するシェルスクリプトをex-4
という名前で作成せよ。(上記の例で sed 's/UNIX/Linux/' samp2
では変換されていない行も出力されている点に注意せよ。)
科目名、学籍番号、所属、氏名、および以下に示す内容を記載したファイルを作成する。
課題2で行ったgrepコマンドはそれぞれどのような処理を行っているか?
課題4で行ったsedコマンドはそれぞれどのような処理を行っているか?
上記課題3を実行して出来上がったシェルスクリプトファイルを以下のコマンドを実行し、一つにまとめる。 以下のコマンドの詳細については、テキスト第3章を参照のこと。
----------------------------------------------------------------------------
icho% pwd (各自実習を行ったディレクトリであることを確認すること)
icho% more ex-[12] > report-6
----------------------------------------------------------------------------
上記二つのファイルを提出する。 レポート提出にはreport.shを用いること。なお、report.shは、この演習で作成したディレクトリにコピーしておくとよい。
提出期限 | 2005年10月24日午後10時 | |
---|---|---|
宛先 | akira-report-06@ipe.tsukuba.ac.jp | 佐藤 |
件名 | Report06 | 全て半角で入力、途中にスペースを入れない |
電子メール以外での提出は採点対象にならない。
電子メールに「科目名、所属、学籍番号、氏名」が書いてある。2点
電子メールに課題2のgrepコマンドの説明が含まれている。2点
電子メールに課題4のsedコマンドの説明が含まれている。2点
電子メールに課題ex-1が含まれている。2点
電子メールに課題ex-2が含まれている。2点
授業のページに戻る
第5回のページへ戻る
第7回のページへ進む