也就是说,在Nth之后提取字段的建议工作是什么? 我在awk中找不到任何快捷方式来执行此操作。
最有效和最简单的方法是什么?
答案 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