解析字符串以获取所需数据

发布于 2024-11-19 16:06:52 字数 195 浏览 6 评论 0原文

我正在尝试解析文件中包含“ID”和数字条目的行。然而,下面的脚本所做的是获取“ID”数值及其后面的所有内容。我怎样才能把它减少为“ID”+数值而不是其他?

提前致谢。

tail -n 1 events.log | sed 's/.*id=\([^)]\+\).*/\1/' > event_id.dat

I'm trying to parse a line within a file that contains "ID" and a numeric entry. However, what the script below is doing is grabbing the "ID" numeric value plus everything after it. How can I just cut it down to "ID" + numeric value and nothing else?

Thanks in advance.

tail -n 1 events.log | sed 's/.*id=\([^)]\+\).*/\1/' > event_id.dat

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

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

发布评论

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

评论(2

心舞飞扬 2024-11-26 16:06:52

括号中的正则表达式字符串是 [^)]\+,这意味着“除结束括号之外的所有字符”。

如果您想捕获数字,则需要将其更改为 [0-9]\+

Your regex string in brackets is [^)]\+, which means "all characters other than the end bracket".

If numerical digits is what you want to catch, you need to change that to [0-9]\+

伤痕我心 2024-11-26 16:06:52

如果没有输入和预期输出的示例,很难说出您正在寻找的内容,但这可能最普遍:这

sed -e 's/.*id=\([0-9]*\).*/\1/'

相当于:

  1. 查找包含“id=”的行,后跟一些数字([0- 9]*),前后可以有任意数量的内容
  2. 将这些行仅替换为数字(其中 \1 引用匹配表达式中括号内的部分

)想?如果没有,您能否更明确地说明您的输入/输出要求?

It's tough to tell what you're looking for without an example of input and expected output, but this might work most generally:

sed -e 's/.*id=\([0-9]*\).*/\1/'

That amounts to:

  1. Look for lines include "id=" immediately followed by some numbers ([0-9]*), with any amount of anything before or after
  2. Replace those lines with just the numbers (where \1 references the part within parenthesis in the match expression)

Does that do what you want? If not, can you be more explicit with your input/output requirements?

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