【发布时间】:2014-12-09 14:14:05
【问题描述】:
我正在尝试替换以下标签之间的字符串 原件:
...<Cell><Data ss:Type="String">some text hmtl encoded and multiline
e.g <br /><strong>title:</strong></Data>.. ..next
element.....<Cell><Data ss:Type="String">some text hmtl encoded and
multiline e.g <br /><strong>title2:</strong></Data>..
输出:
...<Cell><Data ss:Type="String">some text hmtl encoded and multiline
e.g &lt;br /&gt;&lt;strong&gt;title:&lt;/strong&gt;</Data>.. ..next
element.....<Cell><Data ss:Type="String">some text hmtl encoded and
multiline e.g &lt;br /&gt;&lt;strong&gt;title2:&lt;/strong></Data>..
我必须搜索所有带有“<”或“>”的元素,并将它们替换为“&amp;lt;”或“&amp;gt;”,但前提是这些元素介于“<Data ss:Type="String">”和“</Data>”。模式必须包括多行搜索。
“<Data..”不在行首,“</Data>”不在行尾
类型通常是字符串,但也可以是其他类型。
我试过了
awk '/<Data>.*<\/Data>/{sub("<","&lt;",$0)} 1' $sourcefile |
awk '/<Data>.*<\/Data>/{sub(">","&gt;",$0)} 1' >$outputfile
但它没有以正确的方式找到/替换它。
有人知道如何解决它吗? 谢谢!
【问题讨论】:
-
您需要一个双重正则表达式来执行此操作。一个抓取内容,一个替换内容。