千家信息网

sed命令的介绍和用法

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏
千家信息网最后更新 2026年11月02日sed命令的介绍和用法

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。如果没有使诸如'D'的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间。这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

sed的功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等

sed基本用法

sed [option]... 'script' inputfile...

sed [选项].. '脚本这个脚本是sed自身的脚本' 处理的文件...

常用选项:

-n 不输出模式空间内容到屏幕,即不自动打印

-e 多点编辑

-f /PATH/SCRIPT_FILE 从指定文件中读取编辑脚本

-r 支持使用扩展正则表达式

-i.bak 备份文件并原处编辑:直接修改

sed -i.bak(自己定义) '/^root/aadmin';真的修改文件并备份原文件

script:

'地址命令':地址是对文本中的那个部分进行处理,对那些行进行处理如何进行处理就是根据命令来进行处理的

地址定界:

(1) 不给地址:对全文进行处理

(2) 单地址:

#: 指定的行,$:最后一行

/pattern/:被此处模式所能够匹配到的每一行

(3) 地址范围:

#,#

#,+#

/pat1/,/pat2/:只显示中间的部分内容

例如:sed -n '/^ftp/,/^sa/p' /etc/passwd

#,/pat1/

(4) ~:步进

1~2 奇数行

seq 10 | sed -n '1~2p'

2~2 偶数行

seq 10 | sed -n '2~2p'

sed -n '2p' /etc/passwd :只打印第2行

sed命令不仅是对文本,还可以把一些命令的标准输出作为输入进行处理

比如:ifconfig eth0 | sed -n '2p'

编辑命令:

d 删除模式空间匹配的行,并立即启用下一轮循环(sed '2d' /etc/passwd 第二行不显示)

p 打印当前模式空间内容,追加到默认输出之后(本身就会打印加上p之后会在打印一次)

a []text 在指定行后面追加文本,支持使用\n实现多行追加

seq 10 | sed 'axxx':每一行追加xxx

还可以添加换行符:seq 10 | sed 'axxx\nttt\nzzz'

还可以添加换行符:seq 10 | sed '2axxx\nttt\nzzz'

第二行进行追加

i []text 在行前面插入文本:添加斜线表示之后的内容为添加的内容

c []text 替换行为单行或多行文本

w /path/file 保存模式匹配的行至指定文件

r /path/file 读取指定文件的文本至模式空间中匹配到的行后

sed -n '/^UUID/r /etc/issue' /etc/fstab:读取文件内容

= 为模式空间中的行打印行号

! 模式空间中匹配行取反处理

sed '' /etc/passwd :什么都不跟相当与显示一下文件

修改selinux中配置文件

sed -i '/^SELINUX=enforcing/cSELINUX=disabled' /etc/selinux/config

禁用SElinux

sed -i ^C/^SELINUX=/cSELINUX=disabled' /etc/selinux/config

s///g:查找替换,分隔符自己指定,可为s@@@,s###

替换标记:g,全局替换;i,忽略大小写

高级编辑命令

h:把模式空间中的内容覆盖至保持空间

H:把模式空间中的内容追加至保持空间

g:把保持空间中的内容覆盖至模式空间

G:把保持空间中的内容追加至模式空间

x:把模式空间和保持空间中的内容互换

n:覆盖读取匹配到的行的下一行至模式空间

N:追加读取匹配到的行的下一行至模式空间

d:删除模式空间中的行

D:删除多行模式空间中的行

在sed语句中强行引用变量

'''var_name''':使用三个'引号在sed语句中可强行引用变量值

例:IP=IP

[root@centos7 test]#ifconfig ens33 | sed -nr 's#.inet (.) net.*#'''$IP''' \1#p'

IP 192.168.0.100

示例:

seq 1 10 | sed -n 'n;p' :取偶数行

seq 1 10 | sed 'n;d' :取奇数行

seq 1 10 | sed '1!G;h;$!d' :逆序显示

seq 1 10 | sed '$!d' :取出最后一行

seq 1 10 | sed '/^$/d;G' :删除文件中的空白行,而後为所有非空白行添加一个空白行

seq 1 10 | sed '$!N;$!D' :显示最后两行

seq 1 10 | sed 'G' :在原有文件的每行后添加一个空白行

sed练习:

练习:统计/etc/init.d/functions文件中每个单词出现的次数,并排序(使用grep和sed两个命令进行实现)

sed -nr 's#[^[:alpha:]]+#\n#gp' /etc/rc.d/init.d/functions | sort |uniq -c |sort -nr

grep -Eo "[[:alpha:]]+" /etc/rc.d/init.d/functions | sort |uniq -c | sort -nr

练习:取出指定网卡的IP地址

ifconfig eth0 |sed -rn '2s/(^.inet )(.)( netmask.*$)/\2/p'

ifconfig eth0|sed -nr '2s/.t (.) net.*/\1/p'

练习:echo /etc/sysconfig/network/ 取出目录名和基名

目录名:echo /etc/sysconfig/network/ | sed -nr 's#(./)([^/].)/?$#\1#p'

基名: echo /etc/sysconfig/network/ | sed -nr 's#(./)([^/].)/?$#\2#p'

练习:将文本文件的n和n+1行合并为一行

n为奇数行:seq 1 10 | sed -n 'N;s#\n##p'

n为偶数行:seq 1 10 | sed -n '1d;N;s#\n##p'

空间 模式 文件 内容 处理 命令 一行 地址 文本 空白 空白行 脚本 输出 偶数 奇数 缓冲区 多行 循环 缓冲 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 互联网科技公司经营范围 重生之互联网科技帝国 互联网品科技 网络科技有限互联网 互联网与未来科技 顺网科技2021年互联网排名 现代科技和互联网有关系吗 中国科技互联网公司收入 成都互联网科技公司100强 广西互联网科技孵化中心 特约风豹互联网科技为什么扣费 滨湖区互联网智能科技产品有哪些 35岁以上互联网科技行业 萌小萌互联网科技河南有限公司 云南互联网科技学费 互联网对科技影响 上海互联网科技园景观 安徽九吞吴互联网科技有限公司 互联网大会出现的黑科技 互联网金融公司科技 甘肃拓世互联网科技有限公司 新华互联网科技校企合作 彤创互联网科技有限公司 阿大互联网科技有限公司 江苏苏星互联网科技有限公司 电子商务与互联网科技的关系 广州富喜互联网络科技 广州有谷有贝互联网科技有限公司 湖北辰鑫科技互联网
0