简介
Sed(Stream Editor)是一个强大的文本处理工具,常用于对文本进行筛选、转换和替换操作。它通过读取输入流中的文本,并根据提供的编辑指令进行相应的操作。Sed非常灵活,可用于在文件中进行全局搜索与替换、插入和删除行等操作。
安装 Sed
大多数Linux发行版都默认安装了Sed。如果您的系统上没有安装Sed,可以使用以下命令进行安装:
-
对于Debian/Ubuntu系统:
sudo apt-get install sed
-
对于CentOS/RHEL系统:
sudo yum install sed
基本语法
Sed命令的基本语法如下:
sed [选项] '编辑指令' 文件名
其中,选项可以是以下之一:
- -n:关闭默认输出,只显示经过编辑的行。
- -i:直接修改源文件,而不是将结果输出到标准输出。
- -e:允许在命令行上使用多个编辑指令。
编辑指令由动作和模式组成,可以单独使用或连续使用多个指令。
常用编辑指令
以下是一些常用的Sed编辑指令
替换文本
-
替换文件中第一个匹配到的文本:
sed 's/原始文本/新文本/' 文件名
例如:
sed 's/foo/bar/g' filename
-
全局替换所有匹配的文本:
sed 's/原始文本/新文本/g' 文件名
-
仅替换某行中的第N次出现的文本:
sed '行号s/原始文本/新文本/N' 文件名
删除行
- 删除指定行号的行:
sed '行号d' 文件名
- 删除包含特定文本的行:
例如:sed '/要删除的文本/d' 文件名
删除以#开头的注释行sed '/^#/d' filename
- 删除空白行:
sed '/^$/d' 文件名
插入和附加文本
- 在指定行之前插入文本:
sed '行号i\要插入的文本' 文件名
- 在指定行之后附加文本:
sed '行号a\要附加的文本' 文件名
- 在匹配到的行前插入文本:
sed '/pattern/i\inserted text' file.txt
- 在匹配到的行后附加文本:
sed '/pattern/a\appended text' file.txt
执行命令
- 在指定行执行一系列命令:
sed '/正则表达式/{ 命令1 命令2 ... }' 文件名
正则表达式匹配
- 对与正则表达式匹配的行执行一系列命令:
sed '/正则表达式/{
命令1
命令2
...
}' 文件名