【问题标题】:Parsing String to get required Data解析字符串以获取所需的数据
【发布时间】:2011-07-13 18:33:58
【问题描述】:

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

提前致谢。

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

【问题讨论】:

  • 粘贴输入和输出的示例
  • 如果每个匹配项都包含“id=”,那么您真的不需要使用正则表达式捕获该部分,对吧?你不能只捕获数值然后自己添加“id =”吗?

标签: shell scripting string-parsing


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    相当于:

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

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

    【讨论】:

    • 我想你明白了。将尝试并报告。感谢所有的输入,伙计们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多