答案1
考虑到最简单的情况,标签内没有换行符,并且Container
同一行中没有两个标签,
sed -n 's_.*<Container \([^>]*\) />.*_\1_p' filename
应该给你想要的输出。
- 该
s
命令用替换项替换模式 .*<Container
将整行匹配到标签的开头。你想删除它。[^>]*
匹配任意数量的字符,除了>
(这是为了防止捕获多个标签)。这是您想要保留的部分,因此它被包围,\(\)
因此我们可以在替换中使用它\1
/>.*
是你想扔掉的行的其余部分\1
中的 replacement 代表与第一对 匹配的部分\(\)
,所以这就是您要打印的内容- 在匹配的情况下打印输出,而其他输出则被该选项
p
抑制-n
如果事情变得更复杂,我建议使用专门的 XML 工具或 XML 解析库python
。