awk 相当于 cut -f2-

发布于 2024-12-20 00:18:35 字数 83 浏览 1 评论 0原文

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

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

That is, what is the suggested work around of extracting fields after Nth?
I can't find any shortcut in awk to do this.

What is the most efficient and easy way to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

桜花祭 2024-12-27 00:18:35

我使用这样的东西:

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 设置输出字段分隔符。
如果您想使用“:”作为分隔符,请将 FS 和 OFS 设置为“:”。
您也可以使用正则表达式作为分隔符。

编辑2:

如果您对 awk 中 cut 的完整实现感兴趣,请查看此处:

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

HTH 克里斯

I use something like this:

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

EDIT:

For a generic version use:

/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 sets the input field separator, OFS sets the output field separator.
If you want to use ":" e. g. as delimiter, set FS and OFS to ":".
You can use regexp as delimiters, too.

EDIT 2:

If you are interested in a complete implementation of cut in awk, take a look here:

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

HTH Chris

無心 2024-12-27 00:18:35

不如克里斯的解决方案那么好,但这也会打印第一个字段之后的所有内容:

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

Not as nice as Chris's solution but this would also print everything after the first field:

awk '{$1=""; print $0}' file
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文