sed命令基础用法

Sed是一种流式编辑器,是针对文档的行来操作的。它是文本处理中常用的工具,能够完美的配合正则表达式使用。比起grep/egrep来,功能更加强大。


▌sed命令的基本用法:  sed [-nefri] ‘command’ filename        


▎常用选项:

-n :只有经过sed 特殊处理的那一行才会被列出来;

-e :可以多点编辑;

-r :sed 的动作支持的脱意;

-i :直接修改读取的文件内容,而不是输出到终端。


▎常用命令:

 d :删除对应行;

 p :打印。通常会与参数 sed -n协同使用;

 s :替换。配合g表示全部替换。




1、查找

1)特殊字符匹配:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[root@server01 test1] # sed -n '/r.t/'p passwd
operator:x:11:0:operator: /root : /sbin/nologin
sshd:x:74:74:Privilege-separated SSH: /var/empty/sshd : /sbin/nologin
[root@server01 test1] # sed -n '/ro*t/'p passwd
root:x:0:0:root: /root : /bin/bash
operator:x:11:0:operator: /root : /sbin/nologin
[root@server01 test1] # sed -n '/ro*t/'Ip passwd    ##“I”忽略大小写
root:x:0:0:root: /root : /bin/bash
operator:x:11:0:operator: /root : /sbin/nologin
Root:x:0:0:Root: /Root : /bin/bash
[root@server01 test1] # sed -nr '/r+at/'p passwd    ##“r”表示脱意
operator:x:11:0:operator: /root : /sbin/nologin
sshd:x:74:74:Privilege-separated SSH: /var/empty/sshd : /sbin/nologin
[root@server01 test1] # sed -nr '/o{2}/'p passwd
root:x:0:0:root: /root : /bin/bash
lp:x:4:7:lp: /var/spool/lpd : /sbin/nologin
mail:x:8:12:mail: /var/spool/mail : /sbin/nologin
operator:x:11:0:operator: /root : /sbin/nologin
postfix:x:89:89:: /var/spool/postfix : /sbin/nologin
[root@server01 test1] # sed -nr '/root|login/'p passwd
root:x:0:0:root: /root : /bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
adm:x:3:4:adm: /var/adm : /sbin/nologin
......
sshd:x:74:74:Privilege-separated SSH: /var/empty/sshd : /sbin/nologin
postfix:x:89:89:: /var/spool/postfix : /sbin/nologin
chrony:x:997:995:: /var/lib/chrony : /sbin/nologin


2)打印指定行:

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@server01 test1] # sed -n '3'p passwd
daemon:x:2:2:daemon: /sbin : /sbin/nologin
[root@server01 test1] # sed -n '3,5'p passwd
daemon:x:2:2:daemon: /sbin : /sbin/nologin
adm:x:3:4:adm: /var/adm : /sbin/nologin
lp:x:4:7:lp: /var/spool/lpd : /sbin/nologin
[root@server01 test1] # sed -n '20,$'p passwd
postfix:x:89:89:: /var/spool/postfix : /sbin/nologin
chrony:x:997:995:: /var/lib/chrony : /sbin/nologin
[root@server01 test1] # sed -e '20,$'p -e '/lib/'p -n passwd ##单个命令执行多个动作
postfix:x:89:89:: /var/spool/postfix : /sbin/nologin
chrony:x:997:995:: /var/lib/chrony : /sbin/nologin         #同样的行,第一次#
chrony:x:997:995:: /var/lib/chrony : /sbin/nologin         #同样的行,第二次#


2、删除

1
2
3
4
5
[root@server01 test1] # sed -i '10,$'d passwd     ##删除第10行到最后一行
[root@server01 test1] # wc -l passwd
passwd
[root@server01 test1] # sed -i '/root/'d passwd   ##删除带root关键词的行
[root@server01 test1] # grep 'root' passwd


3、替换

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@server01 test1] # sed '1,3s/root/ROOT/' passwd
ROOT:x:0:0:root: /root : /bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
adm:x:3:4:adm: /var/adm : /sbin/nologin
[root@server01 test1] # sed '1,3s/root/ROOT/g' passwd    ##“g”表示全部匹配项
ROOT:x:0:0:ROOT: /ROOT : /bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
adm:x:3:4:adm: /var/adm : /sbin/nologin
......
[root@server01 test1] # sed 's/\(root\)\(.*\)\(bash\)/\3\2\1/' passwd 
bash :x:0:0:root: /root : /bin/root                              ##调换两个字符串的位置
bin:x:1:1:bin: /bin : /sbin/nologin
......
[root@server01 test1] # sed -r 's#([^:]+):(.*):([^:]+)#\3\2\1#g' passwd
/bin/bashx :0:0:root: /rootroot
/sbin/nologinx :1:1:bin: /binbin
/sbin/nologinx :2:2:daemon: /sbindaemon
......
[root@server01 test1] # sed 's/[0-9]//g' passwd    ##删除所有数字
root:x:::root: /root : /bin/bash
bin:x:::bin: /bin : /sbin/nologin
daemon:x:::daemon: /sbin : /sbin/nologin
......
[root@server01 test1] # sed -r 's/(^root)/#&/g' passwd  ##所有root开头的行注释掉
#root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin: /bin : /sbin/nologin
daemon:x:2:2:daemon: /sbin : /sbin/nologin
......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值