【问题标题】:Get text inside xml tag using grep [duplicate]使用grep获取xml标签内的文本[重复]
【发布时间】:2012-01-06 10:35:10
【问题描述】:

现在是星期五下午,我的大脑已经冻僵了!

grep -E -m 1 -o "<title>(.*)</title>" myfile.rss

返回

<title>Some title</title>

我如何才能获得Some title

【问题讨论】:

  • Bash 没有内置函数来解析 XML。您可以考虑使用 PHP、perl 以适当的方式解析 XML。那么获取节点值就简单了
  • 不,这对这项任务来说太过分了!
  • 据我了解,我们只想从已知布局的 xml 中提取标题内容,而不是解析 xml。对于解析 xml xmlstarlet 可能是有用的实用程序。
  • 使用纯 bash 命令解析 XML 的方法并不完美。
  • 关键是OP不需要完美的方法。也不在谈论 bash 内置函数。 grep 没有内置 bash。

标签: regex bash tags grep


【解决方案1】:

例如,将其进一步通过管道

sed -e 's,.*<title>\([^<]*\)</title>.*,\1,g'

【讨论】:

  • 谢谢!大脑解冻;-)
  • +1,但请注意,使用 sed 解析 XML(或 HTML)通常不是一个好主意。只有当输入是众所周知的并且不会意外变化时才应该这样做。对于从互联网上自动获取的任何内容,都应该使用适当的解析器。
  • @Sorpigal,我完全同意,有关详细信息,请参阅问题本身的 cmets。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2015-03-15
  • 2017-12-26
相关资源
最近更新 更多