搜索和Linux中的所有文件替换的代码块(search and replace block of c

2019-09-17 04:13发布

这个问题在哲学上是相似的来了一次又一次的在这里一个问题:

  • 搜索和在linux目录下的所有文件替换文本
  • 如何搜索替换在Ubuntu Linux操作系统的文件中的内容?
  • Linux的搜索和替换一个复杂的字符串

但是,他们(与最后一个除外)都处理简单的替代品。 我有一个出现在许多文件中的代码稍微大的块(我希望复制/粘贴的源代码是受法律惩罚),我需要更换。

有什么,这将帮助我在这里? 我想避免“sed的” ifying块(如在上面的第三个类似的问题做了),因为这将需要一天的大部分时间。 如果我不得不暂时安装一些特定的文本编辑器,就这样吧。

Answer 1:

关于你的问题的好处是,你正在处理的固定字符串,而不是正则表达式...这使得问题相对简单。 你可以写的东西做的工作对你没有太多的问题。

我已链接到解决的办法是不是最佳的,但它的工作,它不依赖于仅匹配开/关线(即,只替换匹配逐字)。 其基本思路是:

  • 阅读,它定义了我们要找的文件中,
  • 请阅读我们的定义替换该文件中,
  • 遍历所有的其他参数,寻找搜索字符串并用替换文本替换它


Answer 2:

如果打开和关闭线是唯一的,你可以删除该块,并使用sed的使用您的代码替换它:

placeholder=somereallyuniquestringthatwillneverbematched
for i in *.php; do
    # Remove original block using first and last line matching and add placeholder
    sed -i -e "/The text of the closing line/a\
$placeholder
/The Text of the opening Line/,/The Text Of The Closing Line/d" "$i"
     # Replace placeholder with desired code
     sed -i -e "s/$placeholder/#include ('include/menu.php');/" "$i"
 done

这只能找到每个文件块的一个次数。 与往常一样,先进行备份。



文章来源: search and replace block of code in all files in linux