首页 > 解决方案 > 如何通过使用 grep 和 find 命令替换字符串来更新文件的内容

问题描述

我在特定子目录下找到包含“负责任”字样的 XML 文件。搜索工作正常,如下所示。

find . -name '*.xml' -exec grep -H 'responsible' {} \;

./dir1/d1.xml<responsible><></responsible>
./dir2/d2.xml<responsible><SYSTEM></responsible>
./dir3/d3.xml<responsible><SYSTEM></responsible>

... 等等。

有没有办法可以用空白替换所有出现的 SYSTEM。

我正在寻找的结果是:

./dir1/d1.xml<responsible><></responsible>
./dir2/d2.xml<responsible><></responsible>
./dir3/d3.xml<responsible><></responsible>

标签: linuxgrepfind

解决方案


我会用 perl pie

perl -p -i -e 's/<responsible><SYSTEM><\/responsible>/<responsible><><\/responsible>/'   `find ./ -name *.xml`

推荐阅读