AWK
awkに慣れよう
第6回の課題でコピーしたディレクトリ下にあるファイルsamp3
,samp4
を用いて以下のようにawk
コマンドを実行しそれらの動作を確認する。
----------------------------------------------------------------------------
icho% more samp3 samp4 # moreで内容を確認する。
icho% cat -n samp2 samp4 # -n オプションをつけると行番号も表示される。
icho% awk '{print $2 $8}' samp3
icho% awk '{print $2 ":" $8}' samp3
icho% awk '{print $2 ":" $NF}' samp3 # $NFは最終フィールド
icho% awk -F: '{print $2 ":" $NF}' samp4
icho% awk -F: '$4>=80 {print $0}' samp4
icho% awk -F: 'BEGIN{s=0;n=0}$1~/^WA/{s=s+$4;n=n+1}END{print s/n}' samp4
icho% date | awk '{printf("Now it is %s%s %s by %s\n",$1,$2,$3,$4)}'
----------------------------------------------------------------------------
awkに関する課題
以下の条件を満たすシェルスクリプトをそれぞれ作成せよ。ただし、使うコマンドはawk
とする。
ファイルsamp4
の中の各人に対する全科目の合計点を求めて、氏名と合計点を表示するシェルスクリプトをex-5
という名前で作成せよ。
date
コマンドの出力を用いて、現在時刻を以下の例に示すような形式で出力するシェルスクリプトをex-6
という名前で作成せよ。
----------------------------------------------------------------------------
icho% ex-6
今日は 2005年10月25日(火)曜日です
現在の時刻はJSTで8時36分01秒です
----------------------------------------------------------------------------
なお、awk
コマンドの記述が長くなり1行に収まらないときは、「\\」記号を最後につけることで改行後もawk
の記述を継続できる。
科目名、学籍番号、所属、氏名、および以下に示す内容を記載したファイルを作成する。
課題1で行ったawkコマンドはそれぞれどのような処理を行っているか?
第6回の課題5(sedに関する課題)と今回の課題2(awkに関する課題)を実行して出来上がったシェルスクリプトファイルを以下のコマンドを実行し、一つにまとめる。 以下のコマンドの詳細については、テキスト第3章を参照のこと。
----------------------------------------------------------------------------
icho% pwd (各自実習を行ったディレクトリであることを確認すること)
icho% more ex-[3456] > report-7
----------------------------------------------------------------------------
上記二つのファイルを提出する。 レポート提出にはreport.shを用いること。なお、report.shは、この演習で作成したディレクトリにコピーしておくとよい。
提出期限 | 2005年10月31日午後10時 | |
---|---|---|
宛先 | akira-report-07@ipe.tsukuba.ac.jp | 佐藤 |
件名 | Report07 | 全て半角で入力、途中にスペースを入れない |
電子メール以外での提出は採点対象にならない。
電子メールに「科目名、所属、学籍番号、氏名」が書いてある。1点
電子メールに課題2のawkコマンドの説明が含まれている。2点
電子メールに前回の課題ex-3が含まれている。2点
電子メールに前回の課題ex-4が含まれている。2点
電子メールに課題ex-5が含まれている。2点
電子メールに課題ex-6が含まれている。1点
授業のページに戻る
第6回のページへ戻る
第8回のページへ進む