awk ifコマンドは19列しか印刷できませんが、2つの列を印刷するにはどうすればよいですか?

awk ifコマンドは19列しか印刷できませんが、2つの列を印刷するにはどうすればよいですか?

列3と列4を印刷したいのですが、ヘッダーの空の列行は印刷しません。

header
tap
norm 
X Y       880 1787
X Y       3253 3439

これを印刷してawk '{print($3,$4)}'提供

(BLANK lines from header rows)
880 1787
3253 3439

これは列19の印刷にのみ機能しますが、両方の列を印刷するにはどうすればよいですか?

awk  '$3{print $3}' 
880
3253

私はcol3 col4が欲しい

880 1787
3253 3439

試しましたが、3列だけが印刷されました。

awk '$3{print $3}''$4{print $4}' 
880
1787
3253
3439

答え1

頭の長さがどれくらいになるか知っていますか(3行):

awk 'NR > 3 { print $3, $4 }'

NRこれまでに読み取ったレコードの数(デフォルトは行数)です。 4行目とすべての後続行でステートメントをNR > 3トリガーします。print

あなたできる使用

awk '$3 { print $3, $4 }'

$3しかし、これは存在するだけでなくゼロでもないかによって異なります。

答え2

もし

header
tap
norm
X Y 880 1787
X Y 3253 3439

それから

awk '{print $3 " " $4}' | sed '/^ *$/d'

作る

880 1787
3253 3439

最後の部分では試してみてください。

 awk '{print $3 " " $4 " " $19}'

列3、4、19を印刷します。

関連情報