使用perl / sed / awk在两个标签之间grep文本

时间:2015-02-25 16:50:54

标签: regex perl awk sed grep

您能告诉我如何在文件中的两个标签之间获取文本。在我的文件中有很多标签。下面的行是在文件中提取的。我需要获得ACTIONSUM作为输出。 <TableName modified='1' type='string'> and </TableName> tags之间的文字。

输入:

</WriteMode><TableName modified='1' type='string'><![CDATA[ACTIONSUM]]></TableName><EnableCaseSensitiveIDs type='bol'>

输出继电器:

ACTIONSUM

请建议使用命令或脚本来进行grep。

提前致谢。

1 个答案:

答案 0 :(得分:0)

使用适当的XML解析工具,例如xmlstarlet

xmlstarlet sel -t -c '//TableName[@modified="1" and @type="string"]' -v . filename.xml

xmllint

xmllint --nocdata --xpath '//TableName[@modified="1" and @type="string"]/node()' filename.xml

使用像sed这样的基于行的工具会导致当XML的格式以良性方式发生变化(例如插入换行符或改组/添加新属性)时会出现问题,这是人们无法预料的。