以下awk语句按预期工作。
awk '{print $1, $2, $3}' test.txt
但是我怎么说我需要在第二列之后的所有列?
awk '{print $1, $2, $3 to $NF}' test.txt
我需要从第三列到该行末尾的所有列。可以有2到10列,并且所有列都被视为最后一列的一部分。
答案 0 :(得分:1)
如果您只想要$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
希望这就是你想要的。
答案 1 :(得分:1)
直观的方式。
awk 'BEGIN{ORS=""} {for(i=3; i<=NF; i++) if(i != NF){print $i " "} else {print $i "\n"}}' test.txt
答案 2 :(得分:0)
更多:
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