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//'

相关内容