👻
awkを使って行番号を表示する際の注意
名前と職位などを書いた以下のようなファイルがあるとする。
❯ cat employee.txt
ayaka manager account 45000
shinji clerk account 25000
mika manager sales 50000
atsushi manager account 47000
takuro clerk sales 15000
john clerk sales 23000
職位がclerk
の行だけを抜き出し、行番号と1列目と3列目をawkで表示したい場合、以下のようになる。
❯ awk '{if($2=="clerk") print NR, $1, $3}' employee.txt
2 shinji account
5 takuro sales
6 john sales
awkでわざわざifを使わなくても、catで表示してgrepで絞り込んでawkで特定の列だけを表示することも出来るが、
その場合、awkの前にgrepで行を絞り込んでいるから、NRを使った行番号の表示が1個目の例とはズレる。
❯ cat employee.txt | grep clerk | awk '{print NR, $1, $3}'
1 shinji account
2 takuro sales
3 john sales
参考
【3週間で学ぶ】Amazon Linux Bash シェルスクリプト実践講座!!初心者でも1からマスターする
Discussion