我可以在 awk 中使用字符“/”吗

我可以在 awk 中使用字符“/”吗

我正在处理一些 .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

更多解决方法。

相关内容