第6回目

sed awk

課題

注意:以下の実行例中のスペース(空白)はコマンド、オプション、引数を見やすくするために挿入している。1つ以上のスペースは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
    正規表現の練習用ファイル
    samp2
    sedの練習用ファイル
    samp3
    awkの練習用ファイル(次回の演習で用います。)
    samp4
    awkの練習用ファイル(次回の演習で用います。)

  2. 正規表現に慣れよう

    コピーしたディレクトリ下のファイル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  
    ----------------------------------------------------------------------------
    	
  3. 正規表現に関する課題

    以下の条件を満たすシェルスクリプトをそれぞれ作成せよ。ただし、使うコマンドはgrepとする。

    1. ファイルsamp1から先頭が「cot」(大文字小文字は区別しない)で始まる行を検索し、行番号も出力するシェルスクリプトをex-1というファイル名で作成せよ。

    2. ファイルsamp1から末尾が「t」(大文字小文字は区別しない)で終わる行を検索し、行番号も出力するシェルスクリプトをex-2というファイル名で作成せよ。

  4. 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
    ----------------------------------------------------------------------------
    	
  5. sedに関する課題

    以下の条件を満たすシェルスクリプトをそれぞれ作成せよ。ただし、使うコマンドはsedとする。

    1. ファイルsamp2の中には「UNIX」という文字列がいくつか含まれているが、行の先頭に「UNIX」と書かれているもののみ「Linux」に変換するシェルスクリプトをex-3という名前で作成せよ。

    2. ファイルsamp2の中の「UNIX」という文字列を「Linux」に変換し、かつ、変換した行だけを出力するシェルスクリプトをex-4という名前で作成せよ。(上記の例で sed 's/UNIX/Linux/' samp2では変換されていない行も出力されている点に注意せよ。)

レポート

  1. 科目名、学籍番号、所属、氏名、および以下に示す内容を記載したファイルを作成する。

  2. 上記課題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全て半角で入力、途中にスペースを入れない

採点基準(合計10点)

電子メール以外での提出は採点対象にならない。

  1. 電子メールに「科目名、所属、学籍番号、氏名」が書いてある。2点

  2. 電子メールに課題2のgrepコマンドの説明が含まれている。2点

  3. 電子メールに課題4のsedコマンドの説明が含まれている。2点

  4. 電子メールに課題ex-1が含まれている。2点

  5. 電子メールに課題ex-2が含まれている。2点


授業のページに戻る

第5回のページへ戻る

第7回のページへ進む