機略戦記

Maneuver warfare

awkで、n番目のフィールドがパターンにマッチした時だけ処理したい

結論

1番目のフィールドにキーワードが含まれる場合だけ処理する場合

awk '$1 ~ /キーワード/'

説明

1フィールド目に1を含む行だけ処理したい。 この例だと1行目だけを処理したい。

$ echo '1 a1\n2 b1\n3 c1'
1 a1
2 b1
3 c1

こうすると、2フィールド目に含まれる1にマッチしてしまい、どの行も処理してしまう。

$ echo '1 a1\n2 b1\n3 c1' | awk '/1/'
1 a1
2 b1
3 c1

こうすれば良い。

$ echo '1 a1\n2 b1\n3 c1' | awk '$1 ~ /1/'
1 a1