3

我正在尝试查找出现“MY_NAME”的整个源代码,并希望将其替换为“YOUR_NAME”。我已经知道它们出现的文件和行号,我想为它们制作一个补丁,以便任何运行补丁的人都可以做同样的事情。有人可以帮忙吗?

4

3 回答 3

2

您可以通过控制台进行操作。只需使用find定位目标文件,然后您就可以声明要替换为什么句子。例如:

find -name '*' | xargs perl -pi -e 's/MY_NAME/YOUR_NAME/g'
于 2012-10-24T18:48:41.533 回答
1

执行 sed 命令然后生成补丁可能更容易。

sed -e '12s/MY_NAME/YOUR_NAME/g;32s/MY_NAME/YOUR_NAME/g' file > file2

这将在第 12 行和第 32 行将 MY_NAME 替换为 YOUR_NAME,并将输出保存到 file2。

如果有很多更改,您还可以生成一个 sed 脚本:

#!/bin/sed -f

12s/MY_NAME/YOUR_NAME/g
32s/MY_NAME/YOUR_NAME/g

然后,要应用于许多文件,您应该使用find

find -type f '(' -iname "*.c" -or -iname "*.h" ')' -exec "./script.sed" '{}' \;

希望这会有所帮助=)

于 2012-10-24T18:48:02.223 回答
0

使用命令 diff 创建一个补丁文件,然后可以使用补丁命令分发和应用该补丁文件。

man diff会给你很多关于这个过程的信息。

于 2012-10-24T18:41:52.737 回答