【问题标题】:Bash - Extract string between (multiple) tokensBash - 在(多个)标记之间提取字符串
【发布时间】:2015-10-05 15:08:40
【问题描述】:

我试图在整个 stackoverflow 上找到这个问题的答案,但只是变得更加困惑......

我需要从2个token之间提取一个字符串,如下:

    <key>UUID</key>
    <string>5432542-gfd5432g-543254g-432g53</string>

我需要的是&lt;string&gt;&lt;/string&gt; 之间的数字字母连字符字符串。问题是这些标记在文件中出现了数千次 - 因此我认为我也必须包含 &lt;key&gt;UUID&lt;/key&gt;

我假设答案将包括 sedawk 和正则表达式,如果可能的话 - 我希望简短地解释一下所建议的内容。

非常感谢。

【问题讨论】:

  • 在我看来像是一些 XML,在这种情况下,这可以使用 XPath 来实现。

标签: regex bash awk sed


【解决方案1】:

如果它总是跟随&lt;key&gt;UUID&lt;/key&gt;,你可以使用grep

grep '<key>UUID</key>' -A 1 file | tail -n 1 | sed -e 's:<string>::' -e 's:</string>::'

1) 包含 &lt;key&gt;UUID&lt;/key&gt; 的 grep 行,以及 (-A 1) 字符串后的一行 2)tail:从输出中只取最后一行 3) sed:将&lt;string&gt;&lt;/string&gt; 替换为空(-e 表示多个模式)

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2013-05-28
    • 2012-07-07
    • 1970-01-01
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多