1

最初の列がゼロの場合、ファイルの 3 列目から 6 列目までを出力したいと思います。

ファイル:

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

3 番目の列から最後の列まで印刷するスケーラブルなソリューション:

$ 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 に答える