常用选项:

    -n:不输出模式空间内容到屏幕,即不自动打印

    -e:多点编辑

    -f:从指定文件中读取编辑脚本

    -r:支持使用扩展正则表达式

    -i:修改源文件

编辑命令:

d: 删除模式空间匹配的行

p: 显示模式空间中的内容

a [\]text:在指定行后面追加文本支持使用\n实现多行追加

i [\]text:在行前面插入文本

c [\]text:替换行为单行或多行文本

w /path/somefile: 保存模式匹配的行至指定文件

r /path/somefile:读取指定文件的文本至模式空间中匹配到的行后

=: 为模式空间中的行打印行号

!:模式空间中匹配行取反处理


示例1:打印第三行:

       sed–n ‘3p’ file

示例2:打印第五行到第十行:

       sed–n ‘5,10p’ file

       sed-n '5,+5p' file

示例3:打印fstab文件中以U开头的行

        ~]# sed -n '/^U/p' /etc/fstab

示例4:显示文件中的奇数行

        ~]# sed -n '1~2p'  file

示例5:显示文件中的偶数行

       ~]# sed -n '2~2p' file

示例6:显示文件中从a开头的行到s开头的行

       ~]# sed -n '/^a/,/^s/p' file


示例7:显示文件中从第一行到s开头的行

~]# sed -n '1,/^s/p' file

示例8:在以a开头的行后面添加字符串

~]# sed '/^a/a\a new line' file

示例9:先备份再修改

sed -i.bak '/^r/r /etc/issue'/testdir/f1

示例10:显示带有root的行

~]# sed -n '/root/p' /etc/passwd

示例11:打印从第2行到第一次匹配到root的行

~]# sed -n '2,/root/p' /etc/passwd

示例12:显示空行行号

~]# sed -n '/^$/=' file

示例13:打印空行并且把行号也打印出来

~]# sed -n -e '/^$/p' -e '/^$/=' file

示例14:打印出无空行的文件

~]# sed '/^$/d' file


高级编辑命令:

h:  把模式空间中的内容覆盖至保持空间中

H :把模式空间中的内容追加至保持空间中

g:  从保持空间取出数据覆盖至模式空间

G :从保持空间取出内容追加至模式空间

x:  把模式空间中的内容与保持空间中的内容进行互换

n:  读取匹配到的行的下一行 覆盖 至模式空间

N :追加匹配到的行的下一行至模式空间

d:  删除模式空间中的行

D :删除 当前模式空间开端至\n 的内容(不在传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed

打印偶数行

sed -n 'n;p' FILE

倒序

sed '1!G;h;$!d' FILE 

1!表示不是第一行才做操作(G),是第一行就不做后面的操作(G),

$!表示不是最后一行才做操作(d),是最后一行就不做后面的操作

打印最后两行

sed '$!N;$!D' FILE

打印最后一行

 sed '$!d' FILE   

在每行后插入空行

 sed ‘G’ FILE

显示空行       

 sed ‘g’ FILE       

把文件中的空行删除并在每行后插入空行

 sed ‘/^$/d;G’ FILE

显示奇数行   

 sed 'n;d' FILE       

显示倒序

 sed -n '1!G;h;$p' FILE 

思考

1、删除/etc/grub2.conf文件中所有以空白开头的行行首的空白字符

2、删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符

3、在/root/install.log每一行行首增加#号

4、在/etc/fstab文件中不以#开头的行的行首增加#号

5、处理/etc/fstab路径,使用sed命令取出其目录名和基名

6、利用sed 取出ifconfig命令中本机的IPv4地址

7、统计centos安装光盘中Package目录下的所有rpm文件的以.分隔倒数第二个字段的重复次数

提示:3、4题用替换其他题都需要正则表达式基础。学了以后再来练习即可