👻

awkを使って行番号を表示する際の注意

2023/01/28に公開

名前と職位などを書いた以下のようなファイルがあるとする。

❯ 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からマスターする
https://www.udemy.com/course/30awslinux/

Discussion