Shell 脚本 - 使用 shell 脚本从所有出现的特定标签中获取内容

Shell 脚本 - 使用 shell 脚本从所有出现的特定标签中获取内容

我的服务器上有一个 XML 文件。在该文件中,我有许多标签,其中有一个标签,例如“容器”标签。我需要分别获取所有容器标签内容的内容。提前谢谢了。

具有预期输出的问题陈述

答案1

考虑到最简单的情况,标签内没有换行符,并且Container同一行中没有两个标签,

sed -n 's_.*<Container \([^>]*\) />.*_\1_p' filename

应该给你想要的输出。

  • s命令用替换项替换模式
  • .*<Container将整行匹配到标签的开头。你想删除它。
  • [^>]*匹配任意数量的字符,除了>(这是为了防止捕获多个标签)。这是您想要保留的部分,因此它被包围,\(\)因此我们可以在替换中使用它\1
  • />.*是你想扔掉的行的其余部分
  • \1中的 replacement 代表与第一对 匹配的部分\(\),所以这就是您要打印的内容
  • 在匹配的情况下打印输出,而其他输出则被该选项p抑制-n

如果事情变得更复杂,我建议使用专门的 XML 工具或 XML 解析库python

相关内容