以下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列代替变量。
答案 0 :(得分: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