Awk 返回文本字符串的中间部分

Awk 返回文本字符串的中间部分,awk,Awk,以下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

以下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变量。

我想我已经理解了您希望输出的内容。试试这行
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|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

对不起,我没收到。
awk{code>awk{code>awk{code>awk{code
awk{code>awk{code
awk{{code>awk{code<
awk{code>awk{打印美元1元,2元,2元,2元,2元,2元,3元,3元,3元,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,(NF-3),3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,,(NF-3,(NF-3,(NF-3),3,,(NF-3,(NF-3,美元,(NF-3,,(NF-3元(NF-2)$(NF-1),$(NF);}“
##awk:第1行:缺失)附近;请输入一些样本输入和期望的输出。非常接近的测试输入是空间分隔的,而不是分离的。测试输出在第四列中可能有空间。@山塔诺,请考虑张贴一些示例数据。您希望第四列中的空格在哪里?不要有一长串的替代选项:
if(i=NF-3)
不要使用大的一行,使用
awk-f file.awk
并发布一个格式良好的脚本,其中包含换行符。。。
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