linux命令 acc,sed linux 命令 在线中文手册

测试文件

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false

daemon:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

&nobody:$:99:99:nobody:/:/bin/false

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

policykit:x:102:1005:Po

例a,这个例子,把test文件中的root替换成tankzhang,只不过只替换一次及终止在这一行的操作,转到下一行

[zhangy@BlackGhost mytest]# sed 's/root/tankzhang/' test |grep tank

tankzhang:x:0:0:root:/root:/bin/bash

例b,这个例子,用tankzhang把文件test中的root全部替换掉,请注意g这个字母,global的缩写

[zhangy@BlackGhost mytest]# sed 's/root/tankzhang/g' test |grep zhang

tankzhang:x:0:0:tankzhang:/tankzhang:/bin/bash

zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash

ba:x:1002:1002::/home/zhangy:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

例c,加了-n p后表示只打印那些发生替换的行(部分替换),上面的例子,我并没有加上grep

[zhangy@BlackGhost mytest]# sed -n 's/root/tankzhang/p' test

tankzhang:x:0:0:root:/root:/bin/bash

例d,加了-n pg后表示只打印那些发生替换的行(全部替换),上面的例子,我并没有加上grep

[zhangy@BlackGhost mytest]# sed -n 's/root/tankzhang/pg' test

tankzhang:x:0:0:tankzhang:/tankzhang:/bin/bash

例e,在第二行,到第八行之间,替换以zhang开头的行,用ying来替换,并显示替换的行

[zhangy@BlackGhost mytest]# cat test | sed -ne '2,8s/^zhang/ying/gp'

yingy:x:1000:100:,,,:/home/zhangy:/bin/bash

例f,当有多个命令要执行时,可以用分号来分开,并且分隔符可以自定义,默认是/。上面的例子意思是在第二行,到第八行之间,替换以zhang开头的行,用ying来替换,在5,到10间,用goodbay来替换dbus,并显示替换的行

[zhangy@BlackGhost mytest]# cat test | sed -n '2,8s/^zhang/ying/gp;5,10s#dbus#goodbay#gp'

yingy:x:1000:100:,,,:/home/zhangy:/bin/bash

goodbay:x:81:81:System message bus:/:/bin/false

例g,这个例子根上面的那个例子一样,只不过有一点不同,那就是-e来充当了分号的作用,-e也能分割多个命令。

[zhangy@BlackGhost mytest]# cat test | sed -ne '2,8s/zhang/ying/gp' -ne '5,10s#dbus#goodbay#gp'

yingy:x:1000:100:,,,:/home/yingy:/bin/bash

goodbay:x:81:81:System message bus:/:/bin/false

例h,正则的用法,在sed里面用括号的话要加上\的,不然会报错的。

[zhangy@BlackGhost mytest]# sed -ne '2,8s/^\(zhangy\)/\1ing/gp' test

zhangying:x:1000:100:,,,:/home/zhangy:/bin/bash

[root@masters ~]# sed -ne '2,8s/^\(zhangy\)/&ing/gp' test

zhangying:x:1000:100:,,,:/home/zhangy:/bin/bash

例i,&的用处是,在找到的字符串后加上&后面的字符串,zhang后都加上了ying

[zhangy@BlackGhost mytest]# sed -ne '2,15s/zhang/&ying/gp' test

zhangyingy:x:1000:100:,,,:/home/zhangyingy:/bin/bash

ba:x:1002:1002::/home/zhangyingy:/bin/bash

@zhangyingying:*:1004:1004::/home/test:/bin/bash

例j,这个例子是说,在以zhang开头的行开始,到匹配Po的行结束,在他们之间进行替换

[zhangy@BlackGhost mytest]# sed -ne '/^zhang/,/Po/s/zhang/ying/gp' test

yingy:x:1000:100:,,,:/home/yingy:/bin/bash

ba:x:1002:1002::/home/yingy:/bin/bash

@yingying:*:1004:1004::/home/test:/bin/bash

例k,n;这里的n是next的缩写,找到root的行后,将其下一行的中的bin换成tank

[zhangy@BlackGhost mytest]$ sed '/root/{n;s/bin/tank/}' test

root:x:0:0:root:/root:/bin/bash

tank:x:1:1:bin:/bin:/bin/false

例m,y的作用是将匹配的字符换成大写,不过替换字符和被替换字符长度要一样

[zhangy@BlackGhost mytest]$ sed -e '1,2y/root/ROOT/' test

ROOT:x:0:0:ROOT:/ROOT:/bin/bash

bin:x:1:1:bin:/bin:/bin/false

例n,h的作用是将找到的行,放到一个缓存区,G的作用是将缓存区中的内容放到最后一行

[zhangy@BlackGhost mytest]$ sed -e '/root/h' -e '$G' test

................................

.............................

ba:x:1002:1002::/home/zhangy:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

@zhangying:*:1004:1004::/home/test:/bin/bash

root:x:0:0:root:/root:/bin/bash

例o,行替换,用匹配root的行,来替换匹配zhangy的行

[zhangy@BlackGhost mytest]$ sed -e '/root/h' -e '/zhangy/g' test

root:x:0:0:root:/root:/bin/bash

bin:x:1:1:bin:/bin:/bin/false

daemon:x:2:2:daemon:/sbin:/bin/false

mail:x:8:12:mail:/var/spool/mail:/bin/false

ftp:x:14:11:ftp:/home/ftp:/bin/false

&nobody:$:99:99:nobody:/:/bin/false

root:x:0:0:root:/root:/bin/bash

http:x:33:33::/srv/http:/bin/false

dbus:x:81:81:System message bus:/:/bin/false

hal:x:82:82:HAL daemon:/:/bin/false

mysql:x:89:89::/var/lib/mysql:/bin/false

aaa:x:1001:1001::/home/aaa:/bin/bash

root:x:0:0:root:/root:/bin/bash

test:x:1003:1003::/home/test:/bin/bash

root:x:0:0:root:/root:/bin/bash

例p,这个例子是说,在以zhang开头的行开始,到匹配Po的行结束,在他们之间进行替换

[zhangy@BlackGhost mytest]# sed -ne '/^zhang/,/Po/s/zhang/ying/gp' test

yingy:x:1000:100:,,,:/home/yingy:/bin/bash

ba:x:1002:1002::/home/yingy:/bin/bash

@yingying:*:1004:1004::/home/test:/bin/bash

例q,3q的意思是到第三行的时候,退出

[zhangy@BlackGhost mytest]$ sed -e 's/bin/tank/g;3q' test

root:x:0:0:root:/root:/tank/bash

tank:x:1:1:tank:/tank:/tank/false

daemon:x:2:2:daemon:/stank:/tank/false

例r,特殊匹配

匹配数字别忘了中括号外面还有一个中括号。

[:alnum:] 字母数字 [a-z A-Z 0-9]

[:alpha:] 字母 [a-z A-Z]

[:blank:] 空格或制表键

[:cntrl:] 任何控制字符

[:digit:] 数字 [0-9]

[:graph:] 任何可视字符(无空格)

[:lower:] 小写 [a-z]

[:print:] 非控制字符

[:punct:] 标点字符

[:space:] 空格

[:upper:] 大写 [A-Z]

[:xdigit:] 十六进制数字 [0-9 a-f A-F]

[zhangy@BlackGhost mytest]# sed -ne '2,15s/zhangy.*[[:digit:]]/=======/gp' test

=======:,,,:/home/zhangy:/bin/bash

@=======::/home/test:/bin/bash

E: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic InRelease” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。 W: GPG 错误:https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32 E: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-updates InRelease” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。 W: GPG 错误:https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32 E: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-backports InRelease” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。 W: GPG 错误:https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-security InRelease: 由于没有公钥,无法验证下列签名: NO_PUBKEY 3B4FE6ACC0B21F32 E: 仓库 “https://mirrors.tuna.tsinghua.edu.cn/ubuntu bionic-security InRelease” 没有数字签名。 N: 无法安全地用该源进行更新,所以默认禁用该源。 N: 参见 apt-secure(8) 手册以了解仓库创建和用户配置方面的细节。
最新发布
06-12
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值