linux - 我如何通过使用 grep 和 find 命令替换字符串来更新文件的内容

标签 linux 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>

最佳答案

我会用 perl pie

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

关于linux - 我如何通过使用 grep 和 find 命令替换字符串来更新文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53163654/

相关文章:

linux - 如何将一批文件重命名为每个文件第一行中存在的名称

java - 从 Java 程序运行 grep

linux - 如果找不到文件,如何使 find -name 返回错误

android - Eclipse ADT 意外异常 'Cannot run program'

c - ICMP 校验和不正确

linux - 如何让 Linux 忽略键盘,同时保持它可供我的程序读取?

arrays - 使用 awk 解析文本文件的各个部分

awk - 让 grep 显示带有前导零、前导空格或填充的行号

list - 如何检查一个数字是否在列表中的另一个数字之前

vba - 在避免循环的范围内更改值,以提高速度