0

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
4

2 回答 2

0

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

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

于 2011-07-13T18:49:10.387 回答
0

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

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

这相当于:

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

这样做是你想要的吗?如果没有,您能否更明确地说明您的输入/输出要求?

于 2011-07-13T18:49:41.840 回答