sed 它和grep也能匹配符合的行,就是不能颜色显示
-n 显示指定的行
-i 会对文件进行真正的编辑(不建议使用)
打印第10行
[root@wy ~]# sed -n '10'p /etc/passwd #p为打印的意思
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
打印一个范围1到10行
[root@wy ~]# sed -n '1,10'p /etc/passwd
显示包含root的行
[root@wy ~]# sed -n '/root/'p /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@wy ~]# sed -n '/r.t/'p /etc/passwd
[root@wy ~]# sed -n '/r*t/'p /etc/passwd
注:那些特殊符号也是需要用 \ 来脱义,或者使用 -r 选项来进行脱义。
删除空行
[root@wy ~]# sed '/^$/'d /etc/passwd #d表示删除
删除指定行
[root@wy ~]# sed '1,10'd /etc/passwd
替换功能 (与vim里替换一样)
所有行都替换成了login
假如想在所有行的末尾加上login,使用&
把数字删除,其实就替换成空就可以了
[root@wy ~]# sed 's#[0-9]##g' /etc/passwd
root:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/nologin
调换位置,比如以冒号分隔的,把第一段和最后一段换一下
[root@wy ~]# sed -r 's#^([a-z0-9]+)(:.*:)(.*$)#\3\2\1#g' /etc/passwd
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/sbin/nologin:x:2:2:daemon:/sbin:daemon
用;来分隔多个表达式(等价于 sed -n -e '/root/p' -e '/wyy/p' /etc/passwd)
[root@wy ~]# sed -n '/root/p; /wyy/p' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
wyy:x:500:500::/home/wyy:/bin/bash
wyy2:x:501:502::/home/wyy2:/bin/bash
解释说明 :
若一行中既有root又有wyy,则显示结果是匹配的行会显示两次。