0

次のawkステートメントは期待どおりに機能しています。|で区切られたテキストファイルから1列目、2列目、最後の4列を返します。

awk '{print $1,"|", $2,"|", $(NF-3), "|",$(NF-2), "|", $(NF-1),"|", $(NF)}'

中間の列を返したいと思います。つまり、次の行の$somethingを機能するものに置き換える必要があります。

awk '{print $1, $2, $something, $(NF-3), $(NF-2) $(NF-1), $(NF)}'

何か変数を置き換える3〜11列が存在する可能性があります。

4

1 に答える 1

1

私はあなたがあなたの出力がどのように見えることを期待しているのか理解したと思います。次の行を試してくださいawk

awk 'BEGIN { OFS="|" } { for (i=1; i<=NF; i++) if (i <= 3 || i >= NF - 3) printf "%s"OFS, $i; else printf "%s", $i; print "" }' file.txt

テスト入力:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12 X13 X14
Y1 Y2 Y3 Y4 Y5 Y6 Y7 Y8 Y9 Y10 Y11 Y12 Y13 Y14
101 102 103 104 1010 1011 1012 1013 1014

テスト出力:

1|2|3|4567891011|12|13|14
X1|X2|X3|X4X5X6X7X8X9X10X11|X12|X13|X14
Y1|Y2|Y3|Y4Y5Y6Y7Y8Y9Y10Y11|Y12|Y13|Y14
101|102|103|10410101011|1012|1013|1014

HTH

于 2012-06-25T03:59:25.807 に答える