sed 选择行号进行处理 1~2,奇数行 2~2,偶数行 #p对第几行进行打印
参数:
p打印,d删除,I忽略大小写,a追加,i之前添加,c替换,!取反
-n关闭自动打印 ifconfig | sed -n '2,4p'
-i 修改原文 -i.bak修改文件并备份
eg:sed -i '/^SELINUX=/cSELINUX=disabled' /etc/sysconfig/selinux sed -n '1~2!p' /etc/sysconfig/selinux sed -En '/^(#|$)/!p' /etc/ssh/sshd_configda打印非注释非空行
sed搜索替代 格式:s///g,s###g,s@@@g g全文搜索,p打印,w保存到文件,I/i忽略大小写 eg:sed -n ‘^/r..t/s/r..t/&test/g’ /etc/passwd 将匹配的r..t替换为r..ttest,&保留匹配到的原字符并添加字符
取基名 echo /etc/sysconfig/network-scripts | sed –En ‘s#(.)/([^/]+/?)$#\1#gp’ 取前后缀 echo | sed –En ‘s/(.).([^.]+)$//gp’ 取IP地址 ifconfig | sed -En '2s/[^0-9]+([0-9.]+)./\1/gp' 取磁盘利用率 df -mh | sed -En '/^/dev/sd/s#(/dev/sd[[:alnum:]]+).([0-9]+%).*#\1 \2#gp'
sed高级用法 分为模式空间和保持空间,利用此空间,可以将模式空间的数据临时保存至保持空间,从而实现后续处理 参数详情: P打印模式空间的开端至\n内容,并追加到默认输出之前 h把模式空间的内容覆盖至保持空间 H把模式空间的内容追加至保持空间 g从保持空间取出数据覆盖至模式空间 G从保持空间取出数据追加至模式空间 X把模式空间的内容与保持空间的内容进行互换 n读取匹配到的行的下一行覆盖至模式空间 N读取匹配到的行的下一行追加至模式空间 d删除模式空间的行 D如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的输入行,而使用合成的模式空间的重新启动循环,如果模式空间不包含换行符,则会像d命令一发出新循环
eg:seq 10|sed –n ‘n:p’
1, 删除centos7的/etc/grub2.cfg文件中所有以空白行开头的行首的空白字符 sed -i 's/^[[:space:]]//g' test 2, 删除centos7中/etc/fstab文件以#开头,后面至少跟一个空白字符的行首#和空白字符 sed -i 's/^#[[:space:]]+//g' test 3, 在每行行首加# sed -i 's/^/#/g' test 4, 文件不易#开头的行加# sed -i 's/^[^#]/#/g' test 5, sed取路径的基础名和目录名 echo "/etc/sysconfig/network-scripts/"|sed -En 's#(.)/([^/]+)/?$#\2#gp' 6, 统计光盘中包的各个适用系统包个数 ls /misc/cd/Packages| sed -En 's/(.*).([^.]+).rpm$/\2/gp'|sort -nr|uniq –c 7, 统计文件中单词出现的次数 egrep -o "\b[[:alpha:]]+\b" test | sort |uniq –c
















