awk中的列组

awk中的列组,awk,Awk,以下awk语句按预期工作 awk '{print $1, $2, $3}' test.txt 但是我怎么说我需要第二列之后的所有列呢 awk '{print $1, $2, $3 to $NF}' test.txt 我需要从第三列到那行末尾的所有列。可以有2到10列,所有列都被视为最后一列的一部分。如果您只需要$3-$NF字段,标准方式是循环(for/while) 但根据您的要求,您可以: awk '{$1=$2="";}sub("^ *","")' 例如: kent$ seq -s'

以下awk语句按预期工作

awk '{print $1, $2, $3}' test.txt
但是我怎么说我需要第二列之后的所有列呢

awk '{print $1, $2, $3 to $NF}' test.txt

我需要从第三列到那行末尾的所有列。可以有2到10列,所有列都被视为最后一列的一部分。

如果您只需要
$3-$NF
字段,标准方式是循环(
for/while

但根据您的要求,您可以:

awk '{$1=$2="";}sub("^ *","")'
例如:

kent$  seq -s' ' 10|awk '{$1=$2="";}sub("^ *","")' 
3 4 5 6 7 8 9 10
如果要将100个字段“分组”为3组:1、2、3-100:

awk '{x=$0;sub($1FS$2,"",x);gsub(FS,"",x);print $1,$2,x}'   
同样的例子:

kent$  seq -s' ' 10|awk '{x=$0;sub($1FS$2,"",x);gsub(FS,"",x);print $1,$2,x}'    
1 2 345678910
希望这是你想要的。

直观的方式

awk'BEGIN{ORS=”“}{(i=3;i更多:

awk '{$1=$2=x; $0=$0; $1=$1}1' file

awk '{$1=$1; sub($1 FS $2 FS,x)}1' file
要使间距保持圆滑:

awk 'sub($1 "[ \t]*" $2 "[ \t]*",x)' file