环境准备
[root@oldboy ~]# cat >>fanzhi.txt< 101,oldboy,CEO
> 102,zhangyao,CTO
> 103,Alex,COO
> 104,yy,CFO
> 105,feixue,CIO
> 110,lidao,COCO
> EOF
sed命令查找
查找指定的行
[root@oldboy ~]# sed -n '3p' #fanzhi.txt##查找显示第三行
oldboy
[root@oldboy ~]# sed -n '1,5p' fanzhi.txt##查找显示第一行到底5行
FANZHI
fanzhi
oldboy
gelong GELONG
过滤出指定的行
[root@oldboy ~]# sed -n '/[a-z]/p' fanzhi.txt##查找出包含a-z(26个字母)这个范围行
fanzhi
oldboy
gelong GELONG
oldgirg
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@oldboy ~]# sed -nr '/oldboy|yy/p' fanzhi.txt##查找出包含oldboy或者yy的行
oldboy
101,oldboy,CEO
104,yy,CFO
grep 命令实现
[root@oldboy ~]# grep 'oldboy\|yy' fanzhi.txt
oldboy
101,oldboy,CEO
104,yy,CFO
这里的例子包含扩展正则符号,不适用egrep也可以实现的原因是因为给|符号使用了转义符号。了解即可。
取一个范围的的字符串
[root@oldboy ~]# sed -n '/102/,/105/p' fanzhi.txt##查找出包含102到第一个包含105的行
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
sed增加
追加到指定行下面的一行
[root@oldboy ~]# sed '3a fanzhibaba' fanzhi.txt##追加到第三行后面
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
fanzhibaba
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
插入到指定行
[root@oldboy ~]# sed '1i12306,fanzhi,HO' fanzhi.txt#插入第一行
12306,fanzhi,HO
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
先清空指定行再写入
[root@oldboy ~]# sed '1c12306,fanzhi,HO' fanzhi.txt#删除指定行再写入
12306,fanzhi,HO
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
删除
原始文件
[root@oldboy ~]# cat -n fanzhi.txt##原始文件里有空行
1 FANZHI
2 fanzhi
3 oldboy
4 gelong GELONG
5
6 oldgirg
7 101,oldboy,CEO
8 102,zhangyao,CTO
9 103,Alex,COO
10 104,yy,CFO
11 105,feixue,CIO
12 110,lidao,COCO
使用正则删除空行
[root@oldboy ~]# sed '/^$/d' fanzhi.txt|cat -n 1 FANZHI
2 fanzhi
3 oldboy
4 gelong GELONG
5 oldgirg
6 101,oldboy,CEO
7 102,zhangyao,CTO
8 103,Alex,COO
9 104,yy,CFO
10 105,feixue,CIO
11 110,lidao,COCO
使用正则显示空行并进行取反,达到删除空行的效果
[root@oldboy ~]# sed -n '/^$/!p' fanzhi.txt|cat -n 1 FANZHI
2 fanzhi
3 oldboy
4 gelong GELONG
5 oldgirg
6 101,oldboy,CEO
7 102,zhangyao,CTO
8 103,Alex,COO
9 104,yy,CFO
10 105,feixue,CIO
11 110,lidao,COCO
练习:
原始文件
[root@oldboy ~]#cat /etc/ssh/sshd_config
……
省略若干
# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
# override default of no subsystems
Subsystem sftp /usr/libexec/openssh/sftp-server
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
删除文件中包含#和空格的行
[root@oldboy ~]# sed -r '/^$|^#/d' /etc/ssh/sshd_config
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key
SyslogFacility AUTHPRIV
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
X11Forwarding yes
UseDNS no
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS
Subsystem sftp /usr/libexec/openssh/sftp-server
其他方法
sed -rn '/^$|^#/!p' /etc/ssh/sshd_config
egrep -v '^$|^#' /etc/ssh/sshd_config
awk '!/^$|^#/' /etc/ssh/sshd_config
对于这个配置文件还可以使用:
grep '^[a-z] ' /etc/ssh/sshd_config
替换
原始文件
[root@oldboy ~]# cat /oldboy/oldboy.txt
I am oldboy teacher!
gebangfegn
I teacher linux.
gebangfegn
I teach linux.
I teacher linux.
把所有带oldboy的行替换成alex.
[root@oldboy ~]# sed 's#oldboy#alex#g' /oldboy/oldboy.txt
I am alex teacher!
I teacher linux.
gebangfegn
I teach linux.
I teacher linux.
练习
[root@oldboy ~]# echo 123456 |sed -r 's#(.*)#<\1>#g'
<123456>
[root@oldboy ~]# echo 123456 |sed -r 's#(.)#<\1>#g'
<1><2><3><4><5><6>
[root@oldboy ~]# echo 123456 |sed -r 's#(..)(..)(..)#\1<\2>\3#g'
12<34>56
指定网卡 查
[root@oldboy /]# ip a s eth0
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:d1:fb:44 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fed1:fb44/64 scope link
valid_lft forever preferred_lft forever
1.取出网卡信息的ip地址
使用sed正则:
[root@oldboy ~]# ip a s eth0|sed -n 3p##先取出这一行
inet 10.0.0.200/24 brd 10.0.0.255 scope global eth0
[root@oldboy ~]# ip a s eth0|sed -n 3p|sed -r 's#^.*t ##g'##把前面的去掉
10.0.0.200/24 brd 10.0.0.255 scope global eth0
[root@oldboy ~]# ip a s eth0|sed -n 3p|sed -r 's#^.*t ##g'|sed -r 's#/.*$##g'#把后面的去掉
10.0.0.200
使用sed后向引用
[root@oldboy ~]# ip a s eth0|sed -n 3p|sed -r 's#^.*t (.*)/.*$#\1#g'##组合在一起
10.0.0.200
更清晰看清楚后向引用
[root@oldboy ~]# ip a s eth0|sed -n 3p|sed -r 's#(^.*t )(.*)(/.*$)#\1#g'
inet
[root@oldboy ~]# ip a s eth0|sed -n 3p|sed -r 's#(^.*t )(.*)(/.*$)#\2#g'
10.0.0.200
[root@oldboy ~]# ip a s eth0|sed -n 3p|sed -r 's#(^.*t )(.*)(/.*$)#\3#g'
/24 brd 10.0.0.255 scope global eth0
使用awk
[root@oldboy ~]# ip a s eth0|awk -F"[ /]+" 'NR==3{print $3}'
10.0.0.200
取出stat /etc/hosts权限644
[root@oldboy ~]# stat /etc/hosts
File: ‘/etc/hosts’
Size: 188 Blocks: 8 IO Block: 4096 regular file
Device: 803h/2051d Inode: 17050962 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:net_conf_t:s0
Access: 2019-05-01 00:00:36.279001729 +0800
Modify: 2019-04-01 17:16:38.000000000 +0800
Change: 2019-04-10 16:00:51.227612667 +0800
Birth: -
后向引用
[root@oldboy ~]# stat /etc/hosts|sed -n 4p|sed -r 's#^.*\(0(.*)/-.*#\1#g'
644
awk命令详解取行及取列详解
1.环境准备
[root@oldboy ~]# cat set.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
gebangfeng COF
119,xiaohong,UFO
119,xiaohong,UFO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
105,feixue,CIO
2.取出某行
[root@oldboy ~]# awk 'NR==3' set.txt
103,Alex,COO
3.过滤出某行
[root@oldboy ~]# awk '/oldboy/' set.txt
101,oldboy,CEO
取出某行并显示行号
[root@oldboy ~]# awk 'NR==1' sed.txt
101,oldboy,CEO
[root@oldboy ~]# awk 'NR==1{print NR}' sed.txt
1
[root@oldboy ~]# awk 'NR==1{print NR $0}' sed.txt
1101,oldboy,CEO
4.取出第一列
[root@oldboy ~]# awk -F"[ ,]" '{print $1}' set.txt##这里的-F为给他指定分隔符 为空格和,
101
102
103
119
119
104
105
110
105
5.取出第一列和第二列
[root@oldboy ~]# awk -F"[ ,]" '{print $1,$2}' set.txt
101 oldboy
102 zhangyao
103 Alex
119 xiaohong
119 xiaohong
104 yy
105 feixue
110 lidao
105 feixue
取出第一列和第二列并加上任意字符
[root@oldboy ~]# awk -F"[ ,]" '{print $1"@@@"$2}' set.txt
101@@@oldboy
102@@@zhangyao
103@@@Alex
devin@@@COF
119@@@xiaohong
119@@@xiaohong
104@@@yy
105@@@feixue
110@@@lidao
105@@@feixue
6.取出第一行的二三列
[root@oldboy ~]# awk -F"[ ,]" 'NR==1{print $2,$3}' set.txt
oldboy CEO
7.快速取出最后一列
[root@oldboy ~]# awk -F'[, ]+' '{print $NF}' set.txt
CEO
CTO
COO
COF
UFO
UFO
CFO
CIO
COCO
CIO
8.快速取出倒数第二列
[root@oldboy ~]# awk -F',' '{print $(NF-1)}' sed.txt
oldboy
zhangyao
Alex
yy
feixue
lidao
awk命令比较大小详解
原始环境
[root@oldboy ~]# cat /etc/passwd
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
oldboy:x:1000:1000::/home/oldboy:/bin/bash
boy1:x:1001:1001::/home/boy1:/bin/bash
fanzhi:x:1002:1002::/home/fanzhi:/bin/bash
oldboy1:x:1003:1003::/home/oldboy1:/bin/bash
oldboy2:x:1004:1004::/home/oldboy2:/bin/bash
1.找出文件中第三列中大于999的行
[root@oldboy ~]# awk -F":" '$3>999' /etc/passwd
oldboy:x:1000:1000::/home/oldboy:/bin/bash
boy1:x:1001:1001::/home/boy1:/bin/bash
fanzhi:x:1002:1002::/home/fanzhi:/bin/bash
oldboy1:x:1003:1003::/home/oldboy1:/bin/bash
oldboy2:x:1004:1004::/home/oldboy2:/bin/bash
找出文件中第四列中大于0并且小于999的行
[root@oldboy ~]# awk -F":" '$4>0&&$4<1000' /etc/passwd
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
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
mail:x:8:12:mail:/var/spool/mail:/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:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
找出磁盘空间信息中第五列大于10的行
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 20G 2.0G 18G 11% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 487M 0 487M 0% /dev/shm
tmpfs 487M 14M 473M 3% /run
tmpfs 487M 0 487M 0% /sys/fs/cgroup
/dev/sda1 197M 105M 93M 54% /boot
tmpfs 98M 0 98M 0% /run/user/0
[root@oldboy ~]# df -h |awk '$5+0>10'
/dev/sda3 20G 2.0G 18G 11% /
/dev/sda1 197M 105M 93M 54% /boot
第二种方法
[root@oldboy ~]# df -h |awk -F'[% ]+' '$5>10'
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 20G 2.0G 18G 11% /
/dev/sda1 197M 105M 93M 54% /boot
环境准备
mkdir -p /server/files/
cat >>/server/files/reg.txt<
第一列是姓氏
第二列是名字
第一第二列合起来就是姓名
第三列是对应的ID号码
最后三列是三次捐款数量
1.查找指定列中包含指定字符结尾的行
[root@oldboyedu59 /oldboy]# awk '$2~/i$/' /server/files/reg.txt
Wu Waiwai 70271111 :250:80:75
Wang Xiaoai 3515064655 :50:95:135
Lao Nanhai 918391635 :250:100:175
2.查找指定列中包含指定字符结尾的行并指定显示列数
[root@oldboyedu59 /oldboy]# awk '$2~/i$/{print $1,$2,$3}' /server/files/reg.txt
Wu Waiwai 70271111
Wang Xiaoai 3515064655
Lao Nanhai 918391635
练习
1.显示Xiaoyu的姓氏和ID号码
[root@oldboyedu59 /oldboy]# awk '$2~/Xiaoyu/' /server/files/reg.txt
Zhang Xiaoyu 390320151 :155:90:201
[root@oldboyedu59 /oldboy]#
[root@oldboyedu59 /oldboy]# awk '$2~/Xiaoyu/{print $1,$3}' /server/files/reg.txt
Zhang 390320151
2.姓氏是Zhang的人,显示他的第二次捐款金额及她的名字
[root@oldboy ~]# awk -F'[ :]' '$1~/Zhang/{print $1,$2,$(NF-1)}' /server/files/reg.txt
Zhang Dandan 100
Zhang Xiaoyu 90
3.显示所有ID号码最后一位数字是1或5的人的全名
[root@oldboy ~]# awk '$3~/[15]$/{print $1,$2}' /server/files/reg.txt
Zhang Xiaoyu
Wu Waiwai
Wang Xiaoai
Li Youjiu
Lao Nanhai
4.显示所有人的全名,以姓,名的格式显示,如Meng,Feixue
[root@oldboy ~]# awk '{print $1","$2}' /server/files/reg.txt
Zhang,Dandan
Zhang,Xiaoyu
Meng,Feixue
Wu,Waiwai
Liu,Bingbing
Wang,Xiaoai
Zi,Gege
Li,Youjiu
Lao,Nanhai
5.显示Xiaoyu的捐款.每个值时都有以[图片上传失败...(image-df9c0d-1558409466612)]
[root@oldboy ~]# awk '$2~/Xiaoyu/{gsub(/:/,"$"); print $NF}' /server/files/reg.txt
$155$90$201
[root@oldboy ~]# awk '$2~/Xiaoyu/{print $NF}' /server/files/reg.txt|tr ':' '$'
$155$90$201
[root@oldboy ~]# awk '$2~/Xiaoyu/{print $NF}' /server/files/reg.txt|sed 's#:#$#g'
$155$90$201
s==sub
gsub(/:/,"$")
gsub(/找谁/,"替换成什么")
gsub(/找谁/,"替换成什么",某一列)
2.创建环境:
head /etc/passwd >/oldboy/passwd.txt
调换/oldboy/passwd.txt文件的第1列和最后一列的位置(不用修改文件内容)
文件内容:
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
将文件的第一列与最后一列换下位置
sed方法
[root@oldboy /oldboy]# sed -r 's#(^.*)(:x.*:)(.*$)#\3\2\1#g' passwd.txt
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/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
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
awk 方法1
[root@oldboyedu59 /oldboy]# awk -F: '{print $7":"$2":"$3":"$4":"$5":"$6":"$1}' passwd.txt
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/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
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
awk 方法2
[root@oldboy /oldboy]# awk '{tmp=$1;$1=$NF;$NF=$1;print $0}' passwd.txt
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
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
awk-调换 /etc/passwd第1列和最后一列的内容-说明
https://www.processon.com/view/link/5aa1df8ae4b0b089b9e60cbd
什么是OFS
OFS awk在显示每一列的时候 每一列之间通过什么分割
OFS的内容就是 ,的内容
Output Field Separator 输出分隔符
例子:
[root@oldboyedu59 /oldboy]# awk -F: -vOFS=":" '{tmp=$1;$1=$NF;$NF=tmp;print $0 }' passwd.txt
/bin/bash:x:0:0:root:/root:root
/sbin/nologin:x:1:1:bin:/bin:bin
/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
/sbin/nologin:x:8:12:mail:/var/spool/mail:mail
/sbin/nologin:x:11:0:operator:/root:operator
awk计算
[root@oldboyedu59 /oldboy]# awk 'BEGIN{print 1/3,2*4,2*2*2*2*2,2^10}'
0.333333 8 32 1024
环境准备
root@oldboyedu59 /oldboy]# cat /oldboy/oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our size is http://blog.oldboyedu.com
my qq is 1351441522
not 4900000448
my god,i am not oldbey,but OLDBOY!
oldboy oldboy oldboy
统计文件中空行的数量
方法1
[root@oldboyedu59 /oldboy]#awk '/^$/' oldboy.txt| wc -l
2
方法2
[root@oldboyedu59 /oldboy]# awk '/^$/{i=i+1;print i}' /oldboy/oldboy.txt
1
2
[root@oldboyedu59 /oldboy]# awk '/^$/{i=i+1}END{print i}' oldboy.txt
17
统计access.log中 第9列是200的数量
[root@oldboyedu59 /oldboy]# awk '$9==200{i++}END{print i}' access.log
142666
[root@oldboyedu59 /oldboy]# awk '$9~/^200$/{i++}END{print i}' access.log
142666
i++ ==i=i+1
统计1-10这些数相加的总和
[root@oldboyedu59 /oldboy]# seq 10 |awk '{i=i+$1;print i}'
1
3
6
10
15
21
28
36
45
55
[root@oldboy /oldboy]# seq 10 |awk '{i=i+$1}END{print i}'
55
1+...+10
i i=i+$1 i
1 空 i=0+1 1
2 1 i=1+2 3
3 3 i=3+3 6
4 6 i=6+4 10
取出目录oldboy的权限0755不少于三种方法
查看权限信息
[root@oldboy ~]# stat oldboy
File: ‘oldboy’
Size: 66 Blocks: 0 IO Block: 4096 directory
Device: 803h/2051d Inode: 17175899 Links: 2
Access: (0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Context: unconfined_u:object_r:admin_home_t:s0
Access: 2019-05-02 11:37:29.331805717 +0800
Modify: 2019-04-28 21:55:17.336783817 +0800
Change: 2019-04-28 21:55:17.336783817 +0800
目标:取出0755
解决
第一种方法sed
总体·思路先取出需要的一行。再进行替换为空
[root@oldboy ~]# stat oldboy|sed -n 4p|sed -r 's#^.*s: \(##g'
0755/drwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
[root@oldboy ~]# stat oldboy|sed -n 4p|sed -r 's#^.*s: \(##g'|sed 's#/d.*$##g'
0755
第二种方法sed后向引用
后向引用格式
sed -n 's#()()#\1\2#gp' filename
1
当在前面匹配部分用小括号的时候
第一个括号内容,可以在后面部分用\1输出;
第二个括号内容,可以在后面部分用\2输出
[root@oldboy ~]# stat oldboy|sed -rn '4s#^.*s: \((.*)/d.*$#\1#gp'
0755
第三种方法awk
[root@oldboy ~]# stat oldboy|awk -F'[(/]+' 'NR==4{print $2}'
0755
第四种方法grep
[root@oldboy ~]# stat oldboy|egrep -o '[0-9]{4}'|grep '5$'
0755
第五种方法grep
[root@oldboy ~]# stat oldboy|grep 'Uid'|egrep -o '[0-9]{4}'
0755