sed用法

查找数据

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











本文转自 iekegz 51CTO博客,原文链接:http://blog.51cto.com/jacksoner/1979372,如需转载请自行联系原作者
上一篇:解读|IBM已转型为认知解决方案云平台公司


下一篇:sed用法