天天看点

sed命令例题

常用选项:

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

    -e:多点编辑

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

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

    -i:修改源文件

编辑命令:

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

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

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

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

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

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

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

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

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

       sed–n ‘3p’ file

       sed–n ‘5,10p’ file

       sed-n '5,+5p' file

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

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

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

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

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

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

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

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

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

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

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

~]# 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题用替换其他题都需要正则表达式基础。学了以后再来练习即可