如果第一列为零,我想打印文件中的第三列,直到第六列。
文件:
col1 col2 col3 col4 col5 col6
0 X2 X3 X4 X5 X6
D1 D2 D3 D4 D5 D6
Y1 Y2 Y3 Y4 Y5 Y6
0 A2 A3 A4 A5 A6
我试过这段代码:
awk '$1==0{key=$0;if(prev!=key){print saved};prev=key;saved=$0}END{print saved}'
,结果输出为:
0 X2 X3 X4 X5 X6
0 A2 A3 A4 A5 A6
但我期待的输出是:
X3 X4 X5 X6
A3 A4 A5 A6
答案 0 :(得分:2)
这样可以解决问题:
$ awk '$1==0{print $3,$4,$5,$6}' OFS='\t' file
X3 X4 X5 X6
A3 A4 A5 A6
可扩展的解决方案,从第三列打印到最后一列:
$ awk '$1==0{for(i=3;i<=NF;i++)printf "%s",$i(i==NF?ORS:OFS)}' OFS='\t' file
X3 X4 X5 X6
A3 A4 A5 A6
如果您不想在最后一列(n = 5)之前打印,则为参数化版本:
$ awk '$1==0{for(i=3;i<=n;i++)printf "%s",$i(i==n?ORS:OFS)}' OFS='\t' n=5 file
X3 X4 X5
A3 A4 A5