编辑命令
d:删除
p:显示模式空间中的内容(如果不加-n,默认匹配到的行再显示一遍)
a \text:在行后面追加文本“text”,支持使用\n实现多行追加
i \text:在行前面插入文本“text”,支持使用\n实现多行插入
c \text:把匹配到的行替换为此处指定的文本“text”
w /PATH/TO/SOMEFILE:保存模式空间匹配到的行至指定的文件中
r /PATH/FROM/SOMEFILE:读取指定文件的内容至当前文件被模式匹配到的行后面;文件合并
=:为模式匹配到的行打印行号
!:条件取反
s///:查找替换,其分隔符可自行指定,常用的有s@@@, s###等(s/查找内容/替换内容/替换标记)
替换标记:
g:全局替换;
i:忽略大小写
w /PATH/TO/SOMEFILE:将替换成功的结果保存至指定文件中;
p:显示替换成功的行;
Sed命令的使用:
删除/tmp/grub.cfg文件中所有行的行首的空白字符(删除其实就是让其替换为空)
首先看下/tmp/grub.cfg文件
[root@localhost ~]# cat /tmp/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set pager=1
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="${saved_entry}"使用sed命令进行操作后
[root@localhost ~]# sed 's/^[[:space:]]\+//' /tmp/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#
### BEGIN /etc/grub.d/00_header ###
set pager=1
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "${next_entry}" ] ; then
set default="${next_entry}"
set next_entry=
save_env next_entry
set boot_once=true
else
set default="${saved_entry}"
2.删除/tmp/grub.cfg文件中所有以#开头的行,行首是#及后面所有的空白字符
首先看下/etc/grub.conf文件
[root@localhost ~]# cat /tmp/grub.cfg
#
# DO NOT EDIT THIS FILE
#
# It is automatically generated by grub2-mkconfig using templates
# from /etc/grub.d and settings from /etc/default/grub
#使用sed命令进行操作后
[root@localhost ~]# sed 's/^#[[:space:]]//' /tmp/grub.cfg
#
DO NOT EDIT THIS FILE
#
It is automatically generated by grub2-mkconfig using templates
from /etc/grub.d and settings from /etc/default/grub
#
3.取/etc/fstab文件中偶数行,另存为/tmp/newfstab
首先看下/etc/fstab文件
[root@localhost ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri May 13 14:28:49 2016
#
# 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
#
UUID=b66544bf-32a4-4bef-82cb-0059f9e94b34 / xfs defaults 0 0
UUID=321571a3-d498-4677-be37-fc18793f3ca1 /boot xfs defaults 0 0
UUID=54e25c6d-d378-4c2f-9df4-62d25f6065f8 /usr xfs defaults 0 0
UUID=9b2e4d08-b266-47fc-b8d1-3f81b76094fe swap swap defaults 0 0使用sed命令进行操作后
[root@localhost ~]# sed '2~2w /tmp/newfstab' /etc/fstab
再来查看另存为的/tmp/newfstab
[root@localhost ~]# cat /tmp/newfstab
#
# Created by anaconda on Fri May 13 14:28:49 2016
# Accessible filesystems, by reference, are maintained under '/dev/disk'
#
UUID=321571a3-d498-4677-be37-fc18793f3ca1 /boot xfs defaults 0 0
UUID=9b2e4d08-b266-47fc-b8d1-3f81b76094fe swap swap defaults 0 0
4.echo一个绝对路径给sed,取其基名
使用sed命令操作后(如果用s///,以/的所有路径需要\转译,避免麻烦,直接使用s@@@)
[root@localhost vars]# echo /etc/yum/vars/ | sed 's@[^/]\+/\?@@'
/yum/vars/