工具sed
sed 可以分析 Standard Input (STDIN) 的数据, 然后将数据经过处理后,再将他输出到 standrad out (STDOUT) 的一个工具,语法为:sed [参数] [动作],它的参数很多,大家可以用man查看帮助,但一般常用的也没有几个.本文仅使用常用的几个参数及动做一些具体实例.
一:sed语法
sed [参数] [动作]
1.参数:[-nli]
-n:只有经过sed处理的那几行才会被列出来。
-l:显示行号
-i:直接修改文件,这个要小心用
2.动作:[n1[,n2]]function
n1, n2 :选择进行动作的行
functon如下表:
a
|
新增: 目前的下一行
|
c
|
取代:取代 n1,n2 之间的行
|
d
|
删除
|
i
|
插入: 目前的上一行
|
p
|
打印: 通常 p 会与参数 sed -n 一起使用
|
s
|
取代,通常后面加/s ex: 1,20s/old/new/g
|
二:几个实例
1.将 /etc/group 的内容列出,同时删除第 2~5 行!
[root@localhost ~]# nl /etc/group | sed '2,5d'
1 root:x:0:root
6 tty:x:5:
7 disk:x:6:root
8 lp:x:7:daemon,lp
9 mem:x:8:
…………….
|
2.删除第 3 到最后一行
[root@localhost ~]# nl /etc/group | sed '3,$d'
1 root:x:0:root
2 bin:x:1:root,bin,daemon
|
3.在第二行后新增Hellow god!(或第三行前插入)
[root@localhost ~]# nl /etc/group | sed '2a Hellow god!!'
[root@localhost ~]# nl /etc/group | sed '3i Hellow god!!'
1 root:x:0:root
2 bin:x:1:root,bin,daemon
Hellow god!!
3 daemon:x:2:root,bin,daemon
|
4.在第二行后面加入两行字
[root@localhost ~]# nl /etc/group | sed '2a Hellow god \
I love you'
#
注意写法
1 root:x:0:root
2 bin:x:1:root,bin,daemon
Hellow god
I love you
3 daemon:x:2:root,bin,daemon
4 sys:x:3:root,bin,adm
|
5.将第2-5行的内容取代成为No 2-5
[root@localhost ~]# nl /etc/group | sed '2,5c NO 2-5'
1 root:x:0:root
NO 2-5
6 tty:x:5:
7 disk:x:6:root
8 lp:x:7:daemon,lp
9 mem:x:8:
|
6.仅显示第 3-5 行
[root@localhost ~]# nl /etc/group | sed -n '3,5p'
3 daemon:x:2:root,bin,daemon
4 sys:x:3:root,bin,adm
5 adm:x:4:root,adm,daemon
|
7使用 ifconfig仅显示 eth0 的 IP
[root@localhost ~]# ifconfig eth0 | grep 'inet ' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
192.168.0.99
#
关键
是去
头
去尾
|
8.删除配置文件的注释行(#开头)
[root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep -v '^#' | wc -l
349
[root@localhost ~]# cat /etc/httpd/conf/httpd.conf | grep -v '^#' | sed '/^$/d' | wc -l
253
#‘/^$’
表示空行
|
9.直接在 ~/.bashrc 最后一行加入This is a test
[root@localhost ~]# sed -i '$a # This is a test' ~/.bashrc
# -i
参数直接修改后面的文件
# $a
表示最后一行才新增
|
本文转自 vfast_chenxy 51CTO博客,原文链接:http://blog.51cto.com/chenxy/178741,如需转载请自行联系原作者