grep并用特殊字符替换文本



我有10k xml,其中大约一半具有以下代码,我想替换:

<protocol_name_from_source><![CDATA[This section will be completed when reviewed by an Expert Review Panel.]]></protocol_name_from_source>

与此:

<protocol_name_from_source><![CDATA[Not applicable.]]></protocol_name_from_source>

我已经能够成功地为受影响的文件grepgrep -rl '<process_review><![CDATA[<p>The Expert Review Panel has not reviewed this measure yet.</p>]]></process_review>' ./

,但我似乎无法用sed替换文本:

grep -rl '<process_review><![CDATA[<p>The Expert Review Panel has not reviewed this measure yet.</p>]]></process_review>' ./ | xargs sed -i 's/<process_review><![CDATA[<p>The Expert Review Panel has not reviewed this measure yet.</p>]]></process_review>/<process_review><![CDATA[<p>Not applicable.</p>]]></process_review>/g'

感谢提前的任何帮助。

编辑:这些XML位于git回购中。是否有损坏回购的风险?

hmm,根据我的男人页面,sed -i选项期望以一个(最终为0个长度(扩展。如果不是唯一的命令参数,则应使用-e引入命令选项。

所以我在这里使用:

grep -rl '<process_review><![CDATA[<p>The Expert Review Panel has not reviewed this measure yet.</p>]]></process_review>' ./ | xargs sed -i '' -e 's/<process_review><![CDATA[<p>The Expert Review Panel has not reviewed this measure yet.</p>]]></process_review>/<process_review><![CDATA[<p>Not applicable.</p>]]></process_review>/g'

当心,我尚未审查(Long ...(SED s/.../.../命令...

最新更新