📜  替换文件 linux 命令中的单词 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:10:34.248000             🧑  作者: Mango

用法

sed命令是用来处理文本文件的,通常被称为“流编辑器”。它可以把文本数据从文件或管道读入,对其中的数据进行选取、变换、删除和新增等操作后输出到屏幕或文件。

sed命令的一般形式为:

$ sed 'pattern1{commands}pattern2{commands}' filename

其中,pattern1pattern2是正则表达式,表示commands所执行的条件。commands是需要执行的命令,可以是对数据进行修改、删除、移动等操作。

基本参数:

  • -n选项:表示不输出模式空间中的内容,必须与p命令一起使用才能输出。
  • -i选项:表示直接修改源文件。

实例

替换文件中指定单词

假设我们有一个文件file.txt,其中包含了一些内容,如下所示:

This is a Shell script written by a Bash programmer

现在我们要将其中的Bash替换成Python,可以使用sed命令进行替换,如下所示:

$ sed 's/Bash/Python/g' file.txt

其中,s命令表示替换操作,g表示全局替换,即一个行上出现几个需要替换的单词,都将被替换。

输出结果如下所示:

This is a Shell script written by a Python programmer
替换文件中指定行

假设我们有一个配置文件config.ini,其中的配置内容如下所示:

[db]
host = localhost
port = 3306
user = root
password = 123456

[redis]
host = localhost
port = 6379
password = 123456

现在我们要在配置文件中将redis的密码修改为654321,可以使用sed命令进行替换,如下所示:

$ sed '/\[redis\]/,/^$/s/password = .*/password = 654321/' config.ini

其中,/^$/分别表示模式空间中的起始和结束标志,s命令表示替换操作,.表示替换任意字符(注意需要在正则表达式中使用转义符\),*表示匹配任意个字符(0个或多个),^$分别表示行首和行尾。

输出结果如下所示:

[db]
host = localhost
port = 3306
user = root
password = 123456

[redis]
host = localhost
port = 6379
password = 654321

以上就是sed命令替换文件中的单词和行的简单介绍。