sed是Stream Editor(字符流编辑器)的缩写,是一个流编辑器,sed是操作、过滤和转换文本内容的强大工具,可以对文件实现快速增删改查。
sed的工作模式及特性:
每次从源文件中读取一行,然后放到sed所用到的内存缓冲空间当中(sed模式空间),编辑完后,然后把模式空间中内容,无论是否被编辑,最终的结果都输出到屏幕上
注意:默认情况,sed不修改源文件内容
工作特性:
1)默认不修改源文件,如果要直接修改源文件,只用-i
2)sed有模式空间和保持空间,默认打印模式空间的内容到标准输出
3)支持正则表达式
4) sed流编辑器,每一次读取一行文本到内存中
语法格式:
sed [选项] [sed内置命令字符] [输入文件]
常用选项:
-n 取消默认的sed输出,常与sed内置命令的p结合
-i 直接修改文件内容
-e 多点编辑
-f 脚本文件,从指定文件中读取编辑脚本(每行一个)
-r 使用扩展正则表达式
地址定界:
1)单地址
#: 指定的行
/pattern/ 被模式匹配到的每一行
2)地址范围
#,# 从第几行到第几行
#,+# 从第几行开始,往下几行
/pattern/,/pattern2/
常用的编辑命令:
d: 删除匹配到的文本
p: 打印当前模式空间
a \: 追加文本,在指定的行后添加一行或多行文本
i \: 插入文本,在指定的行前添加一行或多行文本
c \: 把符合条件的行替换为单行或多行文本
w File : 把符合条件的行,另存为另外一个文件
s/regexp/replacement/ 用replacement替换regexp的内容,regexp可以使用正则表达式,在replacement部分可以使用特殊字符&或\1-\9
g 全局替换
sed内置命令N的作用:不会清空模式空间的内容,并且从输入文件中读取下一行数据,追加到模式空间中,两行数据以换行符\n连接。(追加匹配到行的下一行)
范例1:
[root@fenfa tmp]# sed -n '/^UUID/p' fstab
UUID=0fbbf910-5c9e-463e-8140-488d5588f2f5 /boot ext4 defaults 1 2
[root@fenfa tmp]# sed '/^UUID/a \# hello world' fstab (追加文本)
#
# /etc/fstab
# Created by anaconda on Mon Aug 14 11:25:01 2017
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_fenfa-lv_root / ext4 defaults 1 1
UUID=0fbbf910-5c9e-463e-8140-488d5588f2f5 /boot ext4 defaults 1 2
# hello world
[root@fenfa tmp]# echo '/etc/sysconfig/network-scripts/ifcfg-eth0/' |sed 's@[^/]\+/\?$@@'
/etc/sysconfig/network-scripts/
范例2:
1、 删除匹配到行的下一行
sed -n '/^UUID/{n;d}' /etc/fstab
2、
[root@fenfa tmp]# vim file
You have mail in /var/spool/mail/root
[root@fenfa tmp]# sed 'N;s/\n/\t/' file
aaa bbb
ccc ddd
eee fff
ggg hhh
iii mmm
3)将yes替换成no
[root@fenfa tmp]# sed -i '/disable/s#yes#no#' /etc/xinetd.d/rsync
4)[root@fenfa tmp]# echo '1234567'|sed ':a; s/\B[0-9]\{3\}\>/,&/;ta'
1,234,567
- 第一章:文件和目录操作类命令
- 第一节:pwd命令
- 第二节:cd命令
- 第三节:mkdir命令
- 第四节:touch命令
- 第五节:ls命令
- 第六节:cp命令
- 第八节: mv命令
- 第九节:ln命令
- 第十节:find命令
- 第十一节:chattr命令
- 第十二节:chown命令
- 第十三节:chmod命令
- 第二章:文件过滤和内容编辑类命令
- 第一节: cat命令
- 第二节:less命令
- 第三节:head命令
- 第四节:tail命令
- 第五节:cut命令
- 第六节:sort命令
- 第七节:wc命令
- 第八节:tr命令
- 第三章:文本处理三剑客
- 第一节:grep命令
- 第二节:sed命令
- 第四章:linux信息显示类或搜索命令
- 第一节:uname命令
- 第二节:du命令
- 第三节:data命令
- 第四节:echo命令
- 第五节:watch命令
- 第五章: 文件备份和压缩类命令
- 第一节:tar命令
- 第二节:gzip压缩
- 第三节:zip和upzip命令
- 第四节:scp命令
- 第五节: rsync文件同步工具命令
- 第六章:Linux用户管理及用户信息查询类命令
- 第一节:useradd命令
- 第二节:usermod命令
- 第三节:userdel命令
- 第四节:groupadd和groupdel命令
- 第五节:passwd命令
- 第六节:su命令
- 第七节:visudo命令
- 第八节:id命令
- 第九节:w和who命令
- 第十节:last和lastb命令
- 第七章: Linux磁盘及文件系统管理
- 第一节:fdisk命令
- 第二节: partprobe命令
- 第三节:parted磁盘分区工具
- 第四节:mkfs命令
- 第五节:dumpe2fs命令
- 第六节: fsck命令
- 第七节:mount和umount命令
- 第八节:dd命令
- 第九节:df命令