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

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

全ての行を印刷するにはどうすればいいですか?22列目にあります。

答え1

awk(またはその類似の)を使用するgawk:

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

では、awk列は で示され$$1最初の列、$22 番目の列、というように続きます$0。行全体は で示されます。したがって、この例は次のように読み取れます。列 2 が 2 に等しい場合は、行全体を印刷します。

編集: devnull が以下のように言った:

gawk '$2==2' inputfile 

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

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

関連情報