1

如果第一列为零,我想打印第三列直到文件中的第六列。

文件:

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
4

1 回答 1

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
于 2013-09-10T08:14:46.920 回答