Linux下批量替换字符串

问题描述

平时的工作中离不开编写脚本,LaTeX等纯文本文件。然而,有时候我们会遇到多个文件中存在某一个字符串,但是时间久了我们记不请哪个文件中有这个字符串. 由于技术的更新我们需要把这个字符串替换为新的字符串, 而一个文件一个文件的去人工查找,然后即使使用vim来替换也是一个相当大的工作量,同时也容易遗漏。

解决方案

本文介绍一条命令即可搞定这个操作:

1
sed -i "s/原字符串/新字符串/g" `grep 原字符串 -rl 所在目录`

命令解释

  • 命令行中的反单引号(和左上角~在同一个键上), 表示执行这条命令,并将其输出作为其他命令的参数。
  • 命令grep 原字符串 -rl 所在目录, 使用grep查找当前目录中含有原字符串的文件,并带有路径表示。
  • sed -i \"s/原字符串/新字符串/g\" 目标文件 表示使用sed将目标文件中的原字符串替换为新字符串

参考命令