我正在尝试查找出现“MY_NAME”的整个源代码,并且想用“YOUR_NAME”替换它。我已经知道它们出现的文件和行号,并且我想为此创建一个修补程序,以便运行该修补程序的任何人都可以执行相同的操作。任何人都可以帮忙吗?用整个源代码中的另一个替换声明的一部分
回答
你可以通过控制台来完成。只需使用找到来找到目标文件,然后您可以声明您想用什么语句来替换。例如:
find -name '*' | xargs perl -pi -e 's/MY_NAME/YOUR_NAME/g'
如果你使用''*''的参数,'name'是不必要的/多余的 - 只要'find | xargs ...'而不是。但是你可能想要添加'-type f',所以你只能看文件而不是目录,符号链接,套接字等等...... – twalberg
使用diff命令创建一个补丁文件,然后可以使用patch-command来分发和应用补丁文件。
man diff
会给你很多关于这个过程的信息。
执行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" '{}' \;
希望这有助于=)
如果他想要替换文件中的所有事件,只需避免指定行号。 – Bakuriu
什么是我想添加另一个喜欢所有被触摸的文件?因为在整个源代码中有很多文件..该脚本只适用于一个文件吗? – SinnerShanky
是的。我将编辑答案也适用于许多文件。 –
- 1. 声明内部类名称作为另一个声明的一部分
- 2. 在C#中用WinForms替换另一个图像的一部分
- 3. C#如何用另一个部分替换一个字符串的部分
- 4. 用另一个值替换查询字符串的一部分
- 5. 用另一个字符串替换字符串的一部分
- 6. bash,用另一个变量替换变量的一部分
- 7. 替换git中的另一个分支
- 8. 如何用另一个替换Qsplitter中的一个小部件?
- 9. 用c#中的另一个URL替换部分网址?
- 10. XSLT替换一个部分
- 11. MYSQL使用替换函数来替换声明的一部分与变量
- 12. 用bash中的另一个文件替换整个文件
- 13. SQLite:替换另一个字符串的一部分
- 14. 替换另一个字符串的一部分
- 15. 将矩阵的一部分替换为另一个矩阵
- 16. 替换代码中无用的部分
- 17. 用另一个Django替换一些字符串部分
- 18. 如何用另一个/ C++代码替换一行
- 19. WHEN声明后另一个当声明
- 20. 使用递归替换另一个字符串的部分(Java)
- 21. 如何用Javascript替换另一个HTML代码中的某些HTML代码
- 22. Flash不能从另一个的声明部分实例化一个类?
- 23. 准备准备好的声明中失败的一部分 - 直接在另一个准备好的声明
- 24. 替换另一个
- 25. 代替另一个
- 26. jquery用另一个替换一个div
- 27. jQuery用另一个替换一个Div
- 28. 用另一个jpanel替换一个jpanel
- 29. 用另一个替换SherlockFragment
- 30. 如何替换jQTouch中的整个页面与另一个
您是否需要使用关于行号的知识?如果您只是让它查找“MY_NAME”并将其替换为“YOU_NAME”,则该脚本的编写将会简单得多。 –