我试图在stackoverflow上找到这个问题的答案,但是更加困惑......
我需要从2个令牌中提取一个字符串,如下所示:
<key>UUID</key>
<string>5432542-gfd5432g-543254g-432g53</string>
我需要的是<string>
和</string>
之间的数字 - 字母 - 连字符字符串。问题是这些令牌在文件中出现了数千次 - 因此我认为我必须包括<key>UUID</key>
。
我认为答案将包括sed
,awk
和正则表达式,如果可能的话 - 我会喜欢关于建议内容的简短解释。
提前多多感谢。
答案 0 :(得分:0)
如果它始终跟在<key>UUID</key>
之后,您可以使用grep
grep '<key>UUID</key>' -A 1 file | tail -n 1 | sed -e 's:<string>::' -e 's:</string>::'
1)包含<key>UUID</key>
的grep行,以及(-A 1
)字符串后面的一行
2)tail:从输出中只取最后一行
3)sed:无任何替换<string>
和</string>
(多个模式的-e)