Linux-sed
sed
(Stream Editor)是 Linux 和 Unix 系统中一个强大的流编辑器,用于对文本进行替换、删除、插入等操作。它支持正则表达式,可以批量处理文本。
基本语法
sed [选项] '命令' 文件名
- 选项:控制
sed
的行为。 - 命令:指定对文本执行的操作。
- 文件名:要处理的文件。
常用选项
选项 | 描述 |
---|---|
-n |
只输出处理过的行。 |
-e |
指定多个命令。 |
-f |
从文件中读取 sed 命令。 |
-i |
直接修改文件内容(慎用)。 |
-r |
使用扩展正则表达式。 |
常用命令
命令 | 描述 |
---|---|
s |
替换文本。 |
d |
删除行。 |
p |
打印行。 |
i |
在指定行前插入文本。 |
a |
在指定行后追加文本。 |
c |
替换指定行的内容。 |
示例
替换
-
将文件中的
old
替换为new
:sed 's/old/new/g' file.txt
s
:替换命令。g
:全局替换(替换所有匹配项)。
-
只替换每行的第一个匹配项:
sed 's/old/new/' file.txt
-
替换第 2 行的
old
为new
:sed '2s/old/new/' file.txt
删除
-
删除包含
error
的行:sed '/error/d' file.txt
-
删除第 3 行:
sed '3d' file.txt
-
删除第 2 到第 4 行:
sed '2,4d' file.txt
打印
-
打印包含
error
的行:sed -n '/error/p' file.txt
-
打印第 5 行:
sed -n '5p' file.txt
插入和追加
-
在第 3 行前插入
new line
:sed '3i\new line' file.txt
-
在第 3 行后追加
new line
:sed '3a\new line' file.txt
替换
-
将第 3 行替换为
new line
:sed '3c\new line' file.txt
修改原文件
-
将文件中的
old
替换为new
,并直接修改文件:sed -i 's/old/new/g' file.txt
使用正则
-
使用扩展正则表达式替换
old
为new
:sed -r 's/(old)/\1 new/g' file.txt
多命令指向
-
替换
old
为new
,并删除包含error
的行:sed -e 's/old/new/g' -e '/error/d' file.txt
从文件读取命令
-
从
commands.sed
文件中读取命令并执行:sed -f commands.sed file.txt