awk相当于cut -f2-

时间:2011-12-06 09:28:58

标签: shell awk

也就是说,在Nth之后提取字段的建议工作是什么? 我在awk中找不到任何快捷方式来执行此操作。

最有效和最简单的方法是什么?

2 个答案:

答案 0 :(得分:7)

我使用这样的东西:

awk '{for (i=2;i<=NF;i++) printf $i" ";printf "\n"}' file

编辑:

对于通用版本,请使用:

/home/sirch> echo 1:2:3:4:5 | awk 'BEGIN{FS=OFS=":"}{for (i=2;i<=NF;i++)a=(a)?a OFS $i:$i;print a;a=""}'
2:3:4:5
/home/sirch> echo 1,2,3,4,5 | awk 'BEGIN{FS=OFS=","}{for (i=2;i<=NF;i++)a=(a)?a OFS $i:$i;print a;a=""}'
2,3,4,5
/home/sirch> echo 1,2,3,4,5 | awk 'BEGIN{FS=OFS=","}{for (i=3;i<=NF;i++)a=(a)?a OFS $i:$i;print a;a=""}'
3,4,5
/home/sirch> echo 1,2,3,4,5 | awk 'BEGIN{FS=OFS=","}{for (i=3;i<=4;i++)a=(a)?a OFS $i:$i;print a;a=""}'
3,4

FS设置输入字段分隔符,OFS设置输出字段分隔符。 如果你想使用“:”e。 G。作为分隔符,将FS和OFS设置为“:”。 您也可以使用regexp作为分隔符。

编辑2:

如果您对完全实现cut in awk感兴趣,请看一下:

http://www.gnu.org/s/gawk/manual/html_node/Cut-Program.html

HTH Chris

答案 1 :(得分:0)

不如Chris的解决方案好,但这也会在第一个字段之后打印所有内容:

awk '{$1=""; print $0}' file