sed命令简介,sed命令
sed命令简介,sed命令
sed
是一种流编辑器,一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区,称为模式空间,接着用sed命令处理模式空间中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下行,执行下一个循环。
用法:sed [option]... 'script' inputfile...
# :指定某行,否则全文
/pattern/:被此处模式所能够匹配到的每一行
#,#:指定范围
#,+#:指定#行至#+N行
/pat1/,/pat2/
#,/pat1/
常用选项:
-n :不输出模式空间内容到屏幕
-e :多点编辑
-f:/PATH/脚本文件 :从指定文件中读取编辑脚本
-i.bak :备份原文件并编辑
-r :支持扩展正则表达式
d:删除
sed '/^$/d' :删除空白行
sed '1,10d' :删除1-10行(多行参数之间可用-e多点编辑)
p:显示模式空间中的内容
sed -n '1~2p' file :仅显示奇数行
sed -n '2~2p' file :仅显示偶数行
a [\]test :在指定行后追加文本,支持使用\n实现多行追加
sed '/root/a\superman' /etc/passwd :在包含root的行后一行追加superman
i [\]text :在行前插入文本
sed '/root/i\superman' /etc/passwd :在包含root的行前一行追加superman
c [\]text :替换行为单行或多行文本
sed '/root/c\superman' /etc/passwd :把包含root的行整行内容都替换为superman
w /path/file : 保存模式匹配的行至指定文件
r /path/file :读取指定文件的文本至模式空间中匹配到的行后
= :为模式空间中的行打印行号
sed -n -e '/^$/p' -e '/^$/=' file :显示空白行并打印空白行行号
! :取反
s/// s@@@ s### :查找替换
g :行内全局替换
p :显示替换成功的行
w /PATH/file :将替换成功的行保存至文件中
高级编辑命令
h:把模式空间中的内容覆盖至保持空间中
H:把模式空间中的内容追加至保持空间中
g:从保持空间取出数据覆盖至模式空间
G:从保持空间取出内容追加至模式空间
x:把模式空间中的内容与保持空间中的内容进行互换
n:读取匹配到的行的下一行覆盖至模式空间
N:读取匹配到的行的下一行追加至模式空间
d:删除模式空间中的行
D:删除多行模式空间中的所有行
示例:
1、删除centos7系统/etc/grub2.cfg文件中所有以空白开头的行行首的空白字符
sed /^[[:blank:]]/d' /etc/grub2.cfg
2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符
sed '/^#[[:blank:]]\+/d' /etc/fstab
3、在centos6系统/root/install.log每一行行首增加#号
sed -n 's/^/#&/p' /root/install.log
4、在/etc/fstab文件中不以#开头的行的行首增加#号
sed 's/^[^#]/#&/' /etc/fstab
5、处理/etc/fstab路径,使用sed命令取出其目录名和基名
目录名:echo /etc/fstab |sed 's@[^/]\+$@@'
基名:echo /etc/fstab |sed s'@.*/@@'
6、利用sed 取出ifconfig命令中本机的IPv4地址
ifconfig |sed -n '/inet addr/p' |sed 's/^[[:blank:]]*inet addr://' |cut -d' ' -f1
ifconfig |sed -n '2p' |tr -s ' ' : |cut -d: -f4
7、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数
mount /dev/cdrom /mnt |ls /mnt/Packages/ |sed s'/.rpm//' |sed s'@.*[/.]@@' |sort |uniq -c
8、统计/etc/init.d/functions文件中每个单词的出现次数,并排序
sed s'/[^[:alpha:]]/\n/g' /etc/init.d/functions |sort |uniq -c |sed '1d'
9、将文本文件的n和n+1行合并为一行,n为奇数行
sed 'N;s/\n//'
评论暂时关闭