我有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>
我已经能够成功地为受影响的文件grep
: grep -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/.../.../
命令...