查找数据
1、-n:加上-n后,sed才会被处理;不加则全部打印
[root@test ~]# sed -n '/root/'p /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
dockerroot:x:498:498:Docker User:/var/lib/docker:/sbin/nologin
[root@test ~]# sed -n '/^root/'p /etc/passwd
root:x:0:0:root:/root:/bin/bash
2、打印出第一,二行
[root@test ~]# sed -n '1,2'p /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
打印最后一行
[root@test ~]# sed -n '$'p /etc/passwd
3、支持通配符
[root@test ~]# sed -n '/^t*t/p' /etc/passwd
tcpdump:x:72:72::/:/sbin/nologin
test:x:507:111::/home/test:/bin/bash
test1:x:509:111::/home/test1:/bin/bash
4、-e:多点编辑
删除数据:
1、将含有root的行都删除
[root@test ~]# sed '/root/'d /etc/passwd
2、删除第2行到最后一行
[root@test ~]# sed '2,$'d /etc/passwd
root:x:0:0:root:/root:/bin/bash
3、删除test行,直到最后一行
[root@test ~]# sed '/test/,$'d /etc/passwd
更改数据:
-i:表示执行
1、将test更改为test-gz
[root@test ~]# sed -n 's#test#test-gz#g'p passwd
test-gz:x:507:111::/home/test-gz:/bin/bash
test-gz1:x:509:111::/home/test-gz1:/bin/bash
gztest-gz:x:555:111::/home/zg/:/bin/bash
2、将0-9的删除
[root@test ~]# sed 's#[0-9]##g' passwd
[root@test ~]# sed 's/[a-zA-Z]//g' test.txt
3、
[root@test jpg]# ls *|sed -r 's#(^.*)_test.*#mv & \1.txt#g'
mv 1_test.txt 1.txt
mv 2_test.txt 2.txt
mv 3_test.txt 3.txt
mv 4_test.txt 4.txt
mv 5_test.txt 5.txt
[root@test jpg]# ls *|sed -r 's#(^.*)_test.*#mv & \1.txt#g'|bash
增加数据:
a 追加文本到指定行后
i 插入文本到指定行前
数据准备:
[root@test ~]# cat 1.txt
101 zhang
102 wo
103 yu
104 sl
105 yn
[root@test ~]# sed '2a 102 test' 1.txt
101 zhang
102 wo
102 test
103 yu
104 sl
105 yn
[root@test ~]# sed '2i 102 test' 1.txt
101 zhang
102 test
102 wo
103 yu
104 sl
105 yn
例子:调换2个字符串的位置
sed 's#\(zabbix\)\(.*\)\(nologin\)#\3\2\1#g' passwd
nologin:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/zabbix
()作为一个整体,()在sed中为特殊字符,需要用 \ 脱意
以任意字符开头的,在前面都加上123;&表示前面的内容
sed 's#^.*$#123&#g' passwd
123virftp:x:1002:1002::/home/virftp:/sbin/nologin
123pure-ftp:x:1010:1010::/home/pure-ftp:/bin/bash
123zabbix:x:996:994:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin
123roooooooooot
123rooodt