r 从文件中读取输入行 w 将所选的行写入文件 [root@server ~]# sed '3r /etc/hosts' 2.txt [root@server ~]# sed '$r /etc/hosts' 2.txt [root@server ~]# sed '/root/w a.txt' 2.txt [root@server ~]# sed '/[0-9]{4}/w a.txt' 2.txt [root@server ~]# sed -r '/([0-9]{1,3}\.){3}[0-9]{1,3}/w b.txt' 2.txt
! 对所选行以外的所有行应用命令,放到行数之后 [root@server ~]# sed -n '1!p' 1.txt [root@server ~]# sed -n '4p' 1.txt [root@server ~]# sed -n '4!p' 1.txt [root@server ~]# cat -n 1.txt [root@server ~]# sed -n '1,17p' 1.txt [root@server ~]# sed -n '1,17!p' 1.txt
& 保存查找串以便在替换串中引用 \(\)
[root@server ~]# sed -n '/root/p' a.txt root:x:0:0:root:/root:/bin/bash [root@server ~]# sed -n 's/root/#&/p' a.txt #root:x:0:0:root:/root:/bin/bash
# sed -n 's/^root/#&/p' passwd 注释掉以root开头的行 # sed -n -r 's/^root|^stu/#&/p' /etc/passwd 注释掉以root开头或者以stu开头的行 # sed -n '1,5s/^[a-z].*/#&/p' passwd 注释掉1~5行中以任意小写字母开头的行 # sed -n '1,5s/^/#/p' /etc/passwd 注释1~5行 或者 sed -n'1,5s/^/#/p' passwd 以空开头的加上# sed -n'1,5s/^#//p' passwd 以#开头的替换成空
[root@server ~]# sed -n '/^root/p' 1.txt [root@server ~]# sed -n 's/^root/#&/p' 1.txt [root@server ~]# sed -n 's/\(^root\)/#\1/p' 1.txt [root@server ~]# sed -nr '/^root|^stu/p' 1.txt [root@server ~]# sed -nr 's/^root|^stu/#&/p' 1.txt
= 打印行号 # sed -n '/bash$/=' passwd 打印以bash结尾的行的行号 # sed -ne '/root/=' -ne '/root/p' passwd # sed -n '/nologin$/=;/nologin$/p' 1.txt # sed -ne '/nologin$/=' -ne '/nologin$/p' 1.txt
q 退出 # sed '5q' 1.txt # sed '/mail/q' 1.txt # sed -r '/^yunwei|^mail/q' 1.txt [root@server ~]# sed -n '/bash$/p;10q' 1.txt ROOT:x:0:0:root:/root:/bin/bash