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

时间:2011-07-13 18:33:59

标签: shell scripting string-parsing

我正在尝试解析包含“ID”和数字条目的文件中的一行。但是,下面的脚本正在做的是抓取“ID”数值以及它之后的所有内容。我怎样才能将其简化为“ID”+数值而不是其他?

提前致谢。

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

2 个答案:

答案 0 :(得分:0)

括号中的正则表达式字符串为[^)]\+,表示“除括号之外的所有字符”。

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

答案 1 :(得分:0)

如果没有输入和预期输出的示例,很难说出你在寻找什么,但这可能最常用:

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

相当于:

  1. 查找包含“id =”的行,后面紧跟一些数字([0-9]*),以及之前或之后的任何数量
  2. 仅使用数字替换这些行(其中\1引用匹配表达式中括号内的部分)
  3. 这样做你想要的吗?如果没有,您是否可以更明确地了解输入/输出要求?