工具sed

工具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 表示最后一行才新增

你可能感兴趣的:(shell,职场,sed,休闲)