📅  最后修改于: 2023-12-03 15:10:34.248000             🧑  作者: Mango
sed
命令是用来处理文本文件的,通常被称为“流编辑器”。它可以把文本数据从文件或管道读入,对其中的数据进行选取、变换、删除和新增等操作后输出到屏幕或文件。
sed
命令的一般形式为:
$ sed 'pattern1{commands}pattern2{commands}' filename
其中,pattern1
和pattern2
是正则表达式,表示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
命令替换文件中的单词和行的简单介绍。