awk模式匹配行开头的XML PI

awk模式匹配行开头的XML PI,awk,shell,xpath,Awk,Shell,Xpath,我有一个XML文档,其中包含许多XML处理指令,其形式如下: <?cpdoc something?> 我正试图在awk中将它们与模式匹配 /^\<\?cpdoc/ /^\不要使用正则表达式解析XML,请使用适当的XML/HTML解析器 理论: 根据编译理论,基于的正则表达式不能解析XML。由于XML的层次结构,您需要使用一种语法,并使用类似的工具来操作语法 现实生活™ a中的日常工具: 您可以使用以下选项之一: (我自己的项目) 检查: 示例使用: OP的解决方

我有一个XML文档,其中包含许多XML处理指令,其形式如下:

<?cpdoc something?>

我正试图在awk中将它们与模式匹配

/^\<\?cpdoc/

/^\不要使用正则表达式解析XML,请使用适当的XML/HTML解析器

理论: 根据编译理论,基于的正则表达式不能解析XML。由于XML的层次结构,您需要使用一种语法,并使用类似的工具来操作语法

现实生活™ a中的日常工具: 您可以使用以下选项之一:

(我自己的项目)


检查:


示例使用: OP的解决方案和Ed Morton的解释

如果不转义小于,则它有效,否则它是单词边界。因此,不是:

\<\?

\n是的,我在使用XSLT,但我把它作为一个演示给学生们,让他们了解为什么不应该使用非XML软件来处理XML:-)@peterflyn这将如何证明这一点?正是因为使用非XML软件来处理XML让事情变得更加困难。是的,你不能只是逃避随机字符,并希望得到最好的结果,您必须知道哪些字符是元字符,如果希望将其视为文字,则必须对其进行转义,否则可以通过转义将文字字符转换为元字符(正如您刚刚发现的
Peter Flynn,我将您的解决方案移动到了一个自己的社区答案,添加了一条@EdMorton评论。请随意改进。谢谢!但找不到它。哦,等等,不,它在我的邮箱中。嗯。
\<\?
<\?