这是我的输入:
<array>
<string>extra1</string>
<string>extra2</string>
<string>Yellow
5</string>
注意:“Yellow”和“5”之间有一个空格和换行符
我正在将其通过管道传递给 sed:
| sed -n 's#.*<string>\(.*\)</string>#\1#p'
我得到输出:
extra1
extra2
我知道,因为 sed 从每个输入行的末尾去除换行符,所以换行符不在那里进行匹配 - 所以这说明了结果。我已阅读有关从缓冲区添加下一行的文章,但我无法弄清楚在模式匹配中需要使用什么才能使其正常工作。
我想要的输出是:
extra1
extra2
Yellow 5
(以防万一它有所不同,我使用的是 Mac,所以我需要它与 sed 的 FreeBSD 变体一起工作 - 我认为。)
当然,如果其他工具更适合我想要实现的目标,我愿意接受建议!谢谢!
连接线并将它们分开:
tr -d "\n" < file| grep -o "<string>[^<]*</string>"|sed 's/<string>\(.*\)<\/string>/\1/'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)