在 awk 中组合字段

发布于 2024-07-11 19:01:10 字数 329 浏览 5 评论 0原文

有没有一种简单的方法可以在 awk 中组合字段? 具体来说,我有这样的行:

1,2,some text
3,4,some text, but it has commas in it, annoyingly

我想提取两个数字作为前两个字段,但随后我希望所有文本(逗号和全部)成为第三个字段。 有没有办法做到这一点?

我的基本 awk 调用是这样的:

awk -F\, '{print $1"|"$2"|"$3}' file.txt

对于第一行工作正常,但在第二行文本中的逗号处停止。

is there an easy away to combine fields in awk? Specifically, I have lines like this:

1,2,some text
3,4,some text, but it has commas in it, annoyingly

I want to extract the two numbers as the first two fields, but then I want all of the text (commas and all) to be the third field. Is there a way to do that?

My basic awk call was like this:

awk -F\, '{print $1"|"$2"|"$3}' file.txt

Which works fine for the first line, but stops at the comma in the text on the second line.

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

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

发布评论

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

评论(2

街角卖回忆 2024-07-18 19:01:10

或许:

awk '{for (i=0;i<2;i++) sub(",", "|", $0); print}' file.txt

Maybe:

awk '{for (i=0;i<2;i++) sub(",", "|", $0); print}' file.txt
断桥再见 2024-07-18 19:01:10

你可以使用 sed 来做到这一点。

cat file.txt | sed 's/\(.?*\),\(.?*\),/\1|\2|/'

You could use sed to do it.

cat file.txt | sed 's/\(.?*\),\(.?*\),/\1|\2|/'
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文