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 列将替换 something 变量。

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

高温高压

于 2012-06-25T03:59:25.807 回答