awk 行の表示 先頭行 最終行 指定行

awkは、テキスト処理に欠かせません。よく使う「行を指定した処理」に使える定型スクリプトをまとめました。簡単に書けるように、省略できる部分は極力省きました。

awk と 行

スポンサーリンク



awkで行を指定して「何かの処理」を実行するときは、「いま何行目?」をあらわす変数NRを利用します。例えば、awk 'NR==1'とすれば、1行目に対して処理を行います。一方、最終行では、わざわざ行番号を指定しなくても、「最後に」を意味するENDを使います。

awk と 行指定の処理

awkで行を指定した表示を行います。よく使う「先頭行・1行目」「最終行・最後の行」「行指定」について例(サンプル)を実行します。

サンプルデータ

$ cat aaa.txt
aaa bbb ccc
AAA BBB CCC
111 222 333

awk 先頭行・1行目の表示

NRを指定して、awkで先頭行を表示します。

簡潔に書いた場合

$ cat aaa.txt | awk 'NR==1'
aaa bbb ccc

省略せずに書いた場合

$ cat aaa.txt | awk 'NR==1 {print $0}'
aaa bbb ccc

awkでは、{}内に実行する処理を書きます。省略した場合はprintが実行され、1行全体を表示します。$0は、行全体をあらわします。$1は区切り文字でわけられた1列目の意味になります。

awk 最終行・最後の行の表示

ENDを指定して、awkで最終行を表示します。

$ cat aaa.txt | awk 'END{print}'
111 222 333

{}内に実行する処理を書きます。'END{print}'で、「(awk処理の)最後に行を表示」の意味になります。$0は省略しています。

awk 指定行の表示

NR==行番号を指定して、awkで指定行を表示します。

$ cat aaa.txt | awk 'NR==2'
AAA BBB CCC

{}内の処理は省略したので、print $0が実行されます。

awk と 行の表示 まとめ

awkで行を指定する場合は、NRを使います。最終行は、「何行目か?」がわからないことが多いので、END{}を使います。行に対して処理を省略するとprint $0が実行され、行全体を表示します。簡単に書きたい場合は、省略を活用すると短く書けます。

スポンサーリンク