Shell 正在分析字符串以获取所需数据

Shell 正在分析字符串以获取所需数据,shell,scripting,string-parsing,Shell,Scripting,String Parsing,我试图解析文件中包含“ID”和数字项的行。但是,下面的脚本所做的是获取“ID”数字值及其后的所有内容。我怎么能把它简化为“ID”+数值,而不是别的 提前谢谢 tail -n 1 events.log | sed 's/.*id=\([^)]\+\).*/\1/' > event_id.dat 括号中的正则表达式字符串是[^]\+,表示“除结束括号外的所有字符” 如果您希望捕获数字,则需要将其更改为[0-9]\+如果没有输入和预期输出的示例,很难说出您要查找的内容,但这可能最为普遍: se

我试图解析文件中包含“ID”和数字项的行。但是,下面的脚本所做的是获取“ID”数字值及其后的所有内容。我怎么能把它简化为“ID”+数值,而不是别的

提前谢谢

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

括号中的正则表达式字符串是
[^]\+
,表示“除结束括号外的所有字符”


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

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

sed -e 's/.*id=\([0-9]*\).*/\1/'
这相当于:

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

  • 这是你想要的吗?如果没有,您可以更明确地说明输入/输出要求吗?

    粘贴输入和输出的示例如果每个匹配项都包含“id=”则您实际上不需要用正则表达式捕获该部分,对吗?你能不能先抓住数字值,然后加上“id=”你自己?我想你明白了。我会试试看,然后回来汇报。谢谢大家的意见,伙计们。