9.5-sed命令(下)

打印包含某个字符串的行,不分大小

[root@evan-01 sed]# sed -n '/bus/'Ip test.txt
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@evan-01 sed]#

现在行里面有大写又有小写不好看出来
编辑下 test.txt

[root@evan-01 sed]# vi test.txt

手动添加一个BUs,保存退出
在这里插入图片描述
再打印下

[root@evan-01 sed]# sed -n '/bus/'Ip test.txt
bin:x:1:1:bin:/bin:/sbin/NOLoginBUs
dbus:x:81:81:System message bus:/:/sbin/nologin
[root@evan-01 sed]#

删除某些行——删除指定行
删除前

[root@evan-01 sed]# cat test.txt 
rooooot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLoginBUs
ascavsbkanv:asvka:992:ankanv:rao:jskk
r.ooo:absck:2737:cnalv
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]#

删除后

[root@evan-01 sed]# sed '1'd test.txt
bin:x:1:1:bin:/bin:/sbin/NOLoginBUs
ascavsbkanv:asvka:992:ankanv:rao:jskk
r.ooo:absck:2737:cnalv
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]#

删除某些行——删除区间里的行
删除前

[root@evan-01 sed]# cat test.txt
rooooot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLoginBUs
ascavsbkanv:asvka:992:ankanv:rao:jskk
r.ooo:absck:2737:cnalv
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]#

删除后

[root@evan-01 sed]# sed '1,3'd test.txt
r.ooo:absck:2737:cnalv
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]# 

这里的参数 d 表示删除的动作,它不仅可以删除指定的单位以及多行,而且可以删除匹配某个字符的行,还可以删除从某一行开始到文档最后一行的所有行。不过,这个操作仅仅是在显示器屏幕上并不显示这些行而已,文档还好好的,请不要担心

替换字符或者字符串
替换前
在这里插入图片描述

替换后
在这里插入图片描述上例中的参数 s 就表示替换的动作,参数 g 表示本行全局替换,如果不加 g 则只替换本行出现的第一个,这个用法其实和 vim 的替换大同小异

删除文档中所有的数字
把0-9替换成了空,就相当于是删除了

[root@evan-01 sed]# sed 's/[0-9]//g' test.txt
rooooot:x:::root:/root:/bin/bash
bin:x:::bin:/bin:/sbin/NOLoginBUs
ascavsbkanv:asvka::ankanv:rao:jskk
r.ooo:absck::cnalv
daemon:x:::daemon:/sbin:/sbin/nologin
adm:x:::adm:/var/adm:/sbin/nologin
lp:x:::lp:/var/spool/lpd:/sbin/nologin
sync:x:::sync:/sbin:/bin/sync
shutdown:x:::shutdown:/sbin:/sbin/shutdown
halt:x:::halt:/sbin:/sbin/halt
mail:x:::mail:/var/spool/mail:/sbin/nologin
operator:x:::operator:/root:/sbin/nologin
games:x:::games:/usr/games:/sbin/nologin
ftp:x:::FTP User:/var/ftp:/sbin/nologin
nobody:x:::Nobody:/:/sbin/nologin
systemd-network:x:::systemd Network Management:/:/sbin/nologin
dbus:x:::System message bus:/:/sbin/nologin
polkitd:x:::User for polkitd:/:/sbin/nologin
postfix:x::::/var/spool/postfix:/sbin/nologin
sshd:x:::Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
chrony:x::::/var/lib/chrony:/sbin/nologin
evan:x::::/home/evan:/bin/bash
evan:x::::/home/evan:/bin/bash
user:x::::/home/user:/bin/bash
user:x::::/home/user:/bin/bash
user:x::::/home/user:/sbin/nologin
user:x::::/home/user:/bin/bash
rpc:x:::Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:::RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:::Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]#

[0-9] 表示任意的数字。这里也可以写成 [a-zA-Z] 或者 [0-9a-zA-Z]

删除文档中所有的字母

[root@evan-01 sed]# sed 's/[a-zA-Z]//g' test.txt
::0:0::/://
::1:1::/://
::992:::
.::2737:
::2:2::/://
::3:4:://://
::4:7::///://
::5:0::/://
::6:0::/://
::7:0::/://
::8:12::///://
::11:0::/://
::12:100:://://
::14:50: ://://
::99:99::/://
-::192:192:  :/://
::81:81:  :/://
::999:997:  :/://
::89:89::///://
::74:74:- :///://
::998:996::///://
1::1000:1000:://1://
2::1001:1001:://2://
1::1002:1002:://1://
2::1004:1005:://2://
3::1006:1005:://3://
4::1007:1007:://4://
::32:32: :///://
::29:29:  :///://
::65534:65534:  :///://
[root@evan-01 sed]#

调换两个字符串的位置
调换前

[root@evan-01 sed]# head test.txt 
rooooot:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/NOLoginBUs
ascavsbkanv:asvka:992:ankanv:rao:jskk
r.ooo:absck:2737:cnalv
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
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[root@evan-01 sed]# 

调换后

[root@evan-01 sed]# head test.txt | sed -r 's/([^:]+):(.*):([^:]+)/\3:\2:\1/'
/bin/bash:x:0:0:root:/root:rooooot
/sbin/NOLoginBUs:x:1:1:bin:/bin:bin
jskk:asvka:992:ankanv:rao:ascavsbkanv
cnalv:absck:2737:r.ooo
/sbin/nologin:x:2:2:daemon:/sbin:daemon
/sbin/nologin:x:3:4:adm:/var/adm:adm
/sbin/nologin:x:4:7:lp:/var/spool/lpd:lp
/bin/sync:x:5:0:sync:/sbin:sync
/sbin/shutdown:x:6:0:shutdown:/sbin:shutdown
/sbin/halt:x:7:0:halt:/sbin:halt
[root@evan-01 sed]#

在行前添加字符串

[root@evan-01 sed]# head test.txt | sed -r 's/(.*)/aaa&/'
aaarooooot:x:0:0:root:/root:/bin/bash
aaabin:x:1:1:bin:/bin:/sbin/NOLoginBUs
aaaascavsbkanv:asvka:992:ankanv:rao:jskk
aaar.ooo:absck:2737:cnalv
aaadaemon:x:2:2:daemon:/sbin:/sbin/nologin
aaaadm:x:3:4:adm:/var/adm:/sbin/nologin
aaalp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
aaasync:x:5:0:sync:/sbin:/bin/sync
aaashutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
aaahalt:x:7:0:halt:/sbin:/sbin/halt
[root@evan-01 sed]#

直接修改文件的内容
删除前先备份下
-i 指定行区间删除

[root@evan-01 sed]# cp test.txt test.txt.bak
[root@evan-01 sed]# wc -l test.txt
30 test.txt
[root@evan-01 sed]# sed -i '1,20'd test.txt
[root@evan-01 sed]# wc -l test.txt
10 test.txt
[root@evan-01 sed]#

-i 指定关键字删除文件
删除前

[root@evan-01 sed]# cat test.txt
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user2:x:1004:1005::/home/user2:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]# 

删除后

[root@evan-01 sed]# sed -i '/user2/'d test.txt
[root@evan-01 sed]# cat test.txt
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
evan1:x:1000:1000::/home/evan1:/bin/bash
evan2:x:1001:1001::/home/evan2:/bin/bash
user1:x:1002:1002::/home/user1:/bin/bash
user3:x:1006:1005::/home/user3:/sbin/nologin
user4:x:1007:1007::/home/user4:/bin/bash
rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@evan-01 sed]#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值