千家信息网

Linux中Sed命令怎么用?

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Sed介绍:sed是文本处理工具,读取文本内容,根据指定的条件进行处理如删除、替换、添加等sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处
千家信息网最后更新 2026年10月31日Linux中Sed命令怎么用?

Sed介绍:

sed是文本处理工具,读取文本内容,根据指定的条件进行处理如删除、替换、添加等
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。
Sed 主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

工作流程图

Sed三大功能:

1.读取:sed 从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中;
2.执行:默认情况下,所有的 sed 命令都在模式空间中顺序地执行,除非指定了行的地址,否则 sed 命令将会在所有的行上依次执行;
3.显示:发送修改后的内容到输出流,再发送数据后,模式空间将会被清空。

注意:默认情况下,所有的 sed 命令都是在模式空间内执行的,因此输入的文件并不会发生任何变化,除非是用重定向存储输出。

Sed命令两种格式:

其中,"参数"是指操作的目标文件,当存在多个操作对象时用,文件之间用逗号","分隔;而 scriptfile 表示脚本文件,需要用"-f"选项指定,当脚本文件出现在目标文件之前时,表示通过指定的脚本文件来处理输入的目标文件。
sed [选项] '操作' 参数
sed [选项] -f scriptfile 参数

常见的 Sed命令选项:

语法:sed [options] [script] [inputfile]
-e :允许执行多个脚本;
-f :从脚本文件中读取命令;
-h :显示帮助;
-n :取消默认输出;
-i :直接修改原始文件;
-l: 指定行长度;
-u: 最低限度的缓存输入和输出
-r:在脚本中使用正则表达式

常见的操作选项:

a:增加,在当前行下面增加一行指定内容;
c:替换,将选定行替换为指定内容;
d:删除,删除选定的行;
i :插入,在选定行上面插入一行指定内容;
p:打印,如果同时指定行,表示打印指定行;如果不指定行,则表示打印所有内容,通常与 -n选项一起使用;
s :替换,替换指定字符;
y :字符转换;

Sed 元字符集

^: 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ : 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. : 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。

: 匹配0个或多个字符,如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行。
[] : 匹配一个指定范围内的字符,如/[ss]ed/匹配sed和Sed。
[^] : 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
(..) : 匹配子串,保存匹配的字符,如s/(love)able/\1rs,loveable被替换成lovers。
& : 保存搜索字符用来替换其他字符,如s/love/&/,love这成love。
\< : 匹配单词的开始,如:/\\> : 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
x{m} : 重复字符x,m次,如:/0{5}/匹配包含5个0的行。
x{m,} : 重复字符x,至少m次,如:/0{5,}/匹配至少有5个0的行。
x{m,n} : 重复字符x,至少m次,不多于n次,如:/0{5,10}/匹配5~10个0的行。

Sed 常用操作

选择文本

sed -n 5p aa.txt

sed -n '2p,5p' aa.txt #选择第2到第5行

sed -n '2p;5p' aa.txt #选择第2和第5行

sed -n '/^5/p' aa.txt #以5开头的行

sed -n '$p' aa.txt #打印最后一行

sed -n '1~2p' aa.txt #表示从第一行开始,没个行就打印出来

sed -n '/cc$/p' aa.txt #以cc结尾的行

sed -n '/fff/,10p' aa.txt #表示从含油字符串fff到第10行打印

备注:加上-n只显示出来,不会改变原文件,若要改变原文件,加上sed -i 。

替换文本

g : 获得内存缓冲区的内容,并替代当前模板块中的文本。
p : 打印模板块的行。
w : file 写并追加模板块到file末尾。

例子:

sed 's/e/E/' aa.txt

sed 's/e/E/g' aa.txt #全文中e都替换成E

sed '1,5s/e/E/g' aa.txt #第一行到第5行间e都替换成E

sed '6,/^6/s/f/E/g' aa.txt #以6开头的行f都替换成E

sed '/^6/s//E/g' aa.txt #以6开头的行都替换成E

备注:后面不加上g,只会替换每行第一次会出现的字符串,sed 不会改变原文件,参数之间不一定非要使用斜线分割,也可以使用除空格,换行外的任意字符若要改变原文件,加上 -i 。

删除文本

sed -e '3d' aa.txt #删除第三行

sed -e '3,5d' aa.txt #删除3到5行

sed -e '$d' aa.txt #删除最后一行

sed -e '1d;5d' aa.txt #删除1,5行

sed -e '1~2d' aa.txt #删除奇数行

sed -e '0~2d' aa.txt #删除偶数行

sed -e '1,/^6/d' aa.txt #删除1到以6开头的行

sed -e '5,$d' aa.txt #删除从5行到最后

sed '^$d' aa.txt #删除空白行

备注:删除原文件内容要加上-i

追加文本

sed '3a20200229' aa.txt #第三行后追加

sed '/^8/a2020008' aa.txt #以8开头的行后追加

备注:使用echo也可以追加,但> ,>>不一样。

echo "9988" >>aa.txt 在文本最后追加,
等于sed '$a9988' aa.txt
echo -e "999" >aa.txt 直接覆盖原文

插入文本

sed '3i2128' aa.txt #第三行插入

sed '/^9/i2128' aa.txt #以9开头行插入

sed '$i2348' aa.txt #末行插入,实际上是倒数第二行

组合命令

1.使用-e选项

sed -n -e 's/c/C/g' -e '2,3p' aa.txt

2.使用分号分割

sed -e 's/d/D/g;3i6868p' aa.txt

3.对一个地址使用多个子命令

sed -n '1,5 {
s/c/C/g
s/e/E/g
2i5566
p
}' aa.txt

文件 字符 内容 文本 命令 开头 处理 一行 多个 脚本 缓冲区 缓冲 输入 输出 单词 参数 备注 模式 模板 空间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技企业 上海喔噻互联网科技有限公司 云信互联网科技有限公司 广州百单互联网科技有限公司 科技互联网龙头 唐信互联网科技 米客互联网科技 广州紫鲸互联网科技 齐家互联网科技有限公司 互联网科技股午盘股票涨跌 成都仁贤领冠互联网科技有限公司 蓝色互联网科技 互联网与医疗科技 搜狐科技互联网 西安小鹰速贷互联网科技有限公司 卓翼科技产业互联网合作 互联网科技快讯热点 保山浩联互联网科技有限公司 知域互联网科技有限公司官网 互联网 科技节活动 微视频大赛 互联网科技公司排名 广州大一互联网络科技有限公司 北京路客互联网科技有限公司 互联网巨头科技公司 互联网高科技企业 甘肃拓世互联网科技有限公司 知域互联网科技有限公司大骗子 互联网科技与大数据专业 银川新华互联网科技学校联系电话 萌小萌互联网科技河南有限公司
0