web-dev-qa-db-ja.com

列2に値がある場合に行を出力するシェルスクリプト

1 2 3 4
3 1 4 2
1 4 3 2
4 2 1 3

2番目の列に2があるすべての行を印刷するにはどうすればよいですか?.

1
Kevin Parker

awk(またはそのいとこgawk)の使用:

gawk '$2==2 {print $0}' inputfile

awk列は$で示され、最初の列は$1、2番目の列は$2などです。行全体は$0で示されます。したがって、この例は次のようになります。列2が2に等しい場合、行全体を出力します。

編集:devnullが以下に述べたように:

gawk '$2==2' inputfile 

十分です。 2番目の列に2、最後に4の行を印刷するには、$NFを使用します。これは、フィールド数(つまり、最後の列)を表します。

gawk '$2==2 && $NF==4'  inputfile
7
ph0t0nix