我正在处理一些 .xml,我必须提取其中的一部分。我需要提取出现的行>21120352</PMID>
和出现的行之间的块</PubmedArticle>
但是 awk 的语法使用了“/”,所以它给了我一个错误。我也使用了等效的 U+002F,但解决方案返回的结果比我想要的多。
目前,我有这个解决方案:
awk '/>21120352</,/PubmedArticle>/' file.xml
我也使用了通配符:
awk '/>21120352<.PMID>/,/<.PubmedArticle>/' file.xml
我的问题是是否可以使用</PMID>
和进行搜索</PubmedArticle>
答案1
您需要/
使用反斜杠来转义:\/
。
awk '/>21120352<\/PMID>/,/<\/PubmedArticle>/' file.xml
作为 awk 的替代,我建议看一下xml sel
在解析 XML 文件方面更出色的 XMLStarlets 函数。
答案2
除了使用反斜杠转义模式之外,\
您还可以使用变量来定义模式:
awk '$0~pattern' pattern=">21120352</,/PubmedArticle>/" filename