分からなかったのは、複数のアクションの実行です。
awkで2つのアクション実行のとき、各アクションの記述の間に何を入れるのか分からず、戸惑いました。
awkコマンド実行の基本形は、
awk <スクリプト> <対象ファイル>
です。
上記の <スクリプト> の部分に、対象テキストファイルに対して実行する処理内容を記述します。
awkのスクリプトは、
「パターン」
「アクション」
の2つで構成されます。
'パターン{アクション}' という形です。
パターンの箇所には、
アクションを実行するかどうかの条件を記述します。
アクションの箇所には、
テキストの抽出や置換、削除などの編集処理を記述します。
このような、awkの基本(イロハ)については、
⇒ こちらの記事をご覧ください。
そのアクションとして、複数の処理を記述したい場合があります。
具体例を挙げます。
次の名簿テキストファイル(hoge.txt)があり、各人の点数が保存されています。
1 tanaka 34
2 kawano 75
3 nakano 44
4 yamada 56
5 yosida 62
2 kawano 75
3 nakano 44
4 yamada 56
5 yosida 62
この名簿の各人の点数を表示させた上で、さらに全員の合計を出そうとしました。
そこで、コマンドラインに次のような記述をしました。
awk '{print $2"さんは"$3"点"■i=i+$3}END{print "合計点は"i"点"}' hoge.txt
悩んだのは、上記の記述中、■の部分に何を入れるか、です。
(前にどこかで見かけたが、思い出せない。)
・・・んで、その答えは、
「;」セミコロン でした。
awkで複数のアクションを1行に記述するには
第1アクションと、第2アクションの間に、「;」セミコロンを入れます。
「;」セミコロンが、各アクションの区切り文字となります。
ですから、コマンドラインには、次のとおり記述することになります。
awk '{print $2"さんは"$3"点";i=i+$3}END{print "合計点は"i"点"}' hoge.txt
ちなみに、上記のawkコマンドの実行結果は、次のとおりです。
tanakaさんは34点
kawanoさんは75点
nakanoさんは44点
yamadaさんは56点
yosidaさんは62点
合計点は271点
kawanoさんは75点
nakanoさんは44点
yamadaさんは56点
yosidaさんは62点
合計点は271点
それでは、また次の記事で
■■■■ goosyun ■■■■