如何在Linux系统中使用grep查找并替换文件中的单词?


虽然有很多方法可以在Linux目录中的特定文件中打印和使用特定单词,但是当我们谈论查找特定单词然后将其替换为其他单词时,我们需要混合使用某些Linux实用程序命令。

我们必须了解的两个Linux实用程序命令是:

  • find - 用于查找特定文件或目录

  • sed - 流编辑器缩写,用于执行搜索、编辑和替换等功能。

为了解决查找并替换特定单词的问题,我们将使用一个组合命令,该命令同时包含上述两个命令。

假设我们有一个名为textfile.txt的文本文件,其中包含以下文本:

this is a simple file

现在,我们想将文本“text = **simple**”替换为“text = **not a simple**”。为此,我们将首先找到该文件,然后使用exec实用程序命令告诉Linux我们要执行某些操作,然后使用sed命令来帮助我们查找并更改文件中的字符串。

在您的终端中运行以下命令:

find textfile.txt -type f -exec sed -i "" "s/sample/not a sample/g" {} \;

运行文件后,textfile.txt文件的内容应如下所示:

this is a not a sample file

问题解决了,但是等等,如果您使用的是macOS,则为了实现此输出,您需要导出两个环境变量,或者您可以将它们放在~/.bashrc或~/.zshrc文件中。

在下面的代码中,您可以看到我的~/.zshrc文件中存在的不同环境变量:

immukul@192 linux-questions-code % cat ~/.zshrc
export GOPATH=/Users/immukul/go_projects
export NDHOME=/Users/immukul/Downloads
export GOTRACEBACK=all
export GOROOT=/usr/local/go
export LC_CTYPE=C
export LANG=C

通过将LC_CTYPE设置为C,我们告诉Linux字符串中的每个字节都是其自身的字符,无需应用任何编码规则。

请注意~/.zshrc文件输出中最后两个变量,您只需要将它们放在~/.bashrc或~/.zshrc文件中即可。

更新于:2021年7月30日

4K+ 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告