我想打印第 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
你知道头有多长(三行):
awk 'NR > 3 { print $3, $4 }'
NR
是迄今为止已读取的记录数(默认为行数)。我们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 列。