当前位置: 首页 > 面试题库 >

使用grep和sed查找和替换字符串

袁子瑜
2023-03-14
问题内容

我正在使用以下内容以递归方式在目录中搜索特定的字符串,并将其替换为另一个:

grep -rl oldstr path | xargs sed -i 's/oldstr/newstr/g'

这样可以。唯一的问题是,如果字符串不存在,则sed失败,因为它没有任何参数。这对我来说是个问题,因为我是使用ANT自动运行的,而构建由于sed失败而失败。

如果找不到该字符串,有没有办法使它失效?

我对我可以使用的单行简单解决方案感兴趣(不一定与grepsed与此类通用unix命令一起使用)。


问题答案:

您可以使用find-exec直接进入sed,而不是第一个定位oldstrgrep。它的效率可能会降低一些,但这可能并不重要。这样,sed替换将在列出的所有文件上执行find,但如果oldstr不在该文件上,则显然无法对其进行操作。

find /path -type f -exec sed -i 's/oldstr/newstr/g' {} \;


 类似资料:
  • 我正在尝试替换一组字符串。xlsx表(约70k行,38列)。我有一个文件中要搜索和替换的字符串列表,格式如下:- 要搜索的单词在左侧,替换词在右侧(查找“bird produk”,替换为“bird product”)。My.xlsx工作表如下所示:- 我正在寻找最快的解决方案,因为我有大约200个单词在列表中要搜索,和。xlsx文件相当大。为此,我需要使用Python,但我愿意接受任何其他更快的解

  • 在Atom中,对你文件或者项目中的文本进行查找或者替换,非常快速而且容易。 cmd-F 在缓冲区中查找 cmd-shift-f 在整个项目中查找 如果你执行了这些命令,你屏幕的底部会出现一个“Find and Replace”面板。 你可以按下cmd-F,输入需要搜索的字符串,并且多次按下回车(或者cmd-G,或者“Find Next”按钮)来在当前文件中搜索,循环查找当前文件中的匹配内容。“Fi

  • 问题内容: 我得到了这个清单: 我想用一些与之相似的奇异值代替,从而得到一个新的清单: 问题答案: 这些称为列表推导。

  • 我有一些占位符的docx文档。现在我应该用其他内容替换它们,并保存新的docx文档。我从docx4j开始,发现了这个方法: 但这很少起作用,因为通常占位符会在多个文本运行中拆分。 如何解决这个问题?

  • 问题内容: 我正在寻找Java中字符串查找和替换的最佳方法。 这句话是这样的:“我叫米兰,人们把我称为米兰·瓦西奇​​”。 我想用Milan Vasic代替字符串Milan,但是在我已经拥有Milan Vasic的地方,不应该这样。 搜索/替换后的结果应为:“我叫Milan Vasic,人们称我为Milan Vasic”。 我曾尝试使用indexOf()以及Pattern / Matcher组合,

  • 问题内容: 我运行以下命令以查找并替换网站根目录中所有文件中所有出现的“ apple”并替换为“ orange”: 但是它不会通过子目录。 此命令有什么问题? 这是输出的一些行: 问题答案: 您的发现应该看起来像这样,以避免将目录名称发送到sed: