【发布时间】:2012-05-20 09:44:01
【问题描述】:
这个问题在哲学上类似于这里一次又一次出现的问题:
- Search and replace text in all files of a linux directory
- How to search-replace content within files in Ubuntu Linux?
- Linux search and replace a complex string
但是它们(除了最后一个)都处理简单的替换。我有一大段代码出现在许多文件中(我希望复制/粘贴源代码会受到法律惩罚),我需要替换它。
这里有什么可以帮助我的吗?我想避免将块“sed”化(如上面第三个类似问题中所做的那样),因为这将花费一天的大部分时间。如果我必须临时安装一些特定的文本编辑器,那就这样吧。
【问题讨论】:
-
输入是大量的PHP文件,代码块是相当长的PHP和内联Javascript的混合体。我只想用
include('includes/menu.php');替换它,它包含一个更正的版本,但内联/转义原始版本将是一场噩梦 -
如果有问题的代码块可以用正则表达式定义,我认为 sed 仍然是你最好的选择。如果它不能被定义,但存在于每个文件的相同位置(相同的行号开始和结束),你可能会用一个花哨的 tr 来做到这一点。如果您都没有,我猜您将不得不手动完成。
-
@juwiley 是否可以定义一个正则表达式,基本上说“查找字符串'general_help',并将
<?php的块匹配到包含它的?>?我不是非常适合正则表达式:-\ -
关于 sed 的说明,似乎很难让它与多行输入很好地配合