[root@bigdata27 exam]# echo '<123456>' | sed 's#123456#123456#g'
<123456>
[root@bigdata27 exam]# echo '<123456>' | sed 's#123456#<123456>#g'
<<123456>>
[root@bigdata27 exam]#
echo 123456
想要的结果:<123456>
[root@bigdata27 exam]# echo '123456' | sed -r 's#(.*)#<\1>#g'
<123456>
[root@bigdata27 exam]# echo 123456 | sed -r 's#(.*)#<\1>#g'
<123456>
想要的结果:<1><2><3><4><5><6>
[root@bigdata27 exam]# echo 123456 | sed -r 's#(.)#<\1>#g'
<1><2><3><4><5><6>
echo '11222233333344442222266668888990000999'
想要结果
11
2222
333333
4444
22222
6666
8888
99
0000
999
提取IP地址
[root@bigdata27 exam]# ip a s em1 | sed -n 3p |sed -r 's#^.*et (.*)/.*$#\1#g'
172.16.10.27
[root@bigdata27 exam]# ip a s em1 | sed -rn '3s#^.*et (.*)/.*$#\1#gp'
172.16.10.27
提取ifconfig em1 中ip地址和掩码:
[root@bigdata27 exam]# ifconfig em1 |sed -rn 2p
inet 172.16.10.27 netmask 255.255.255.0 broadcast 172.16.10.255
[root@bigdata27 exam]# ifconfig em1 |sed -rn '2s#^.*et (.*) .*k (.*) br.*$#\1 \2#gp'
172.16.10.27 255.255.255.0
awk命令格式
参数
-F
-v
修改或创建awk变量
-F= -vFS=
awk '找谁{干啥}'
找谁
模式
pattern
条件
干啥
动作
action
命令
显示第1行的第1列
[root@bigdata27 exam]# ip a s em1
2: em1: mtu 1500 qdisc mq state UP qlen 1000
link/ether 18:66:da:eb:0c:14 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.27/24 brd 172.16.10.255 scope global em1
valid_lft forever preferred_lft forever
inet6 fe80::1a66:daff:feeb:c14/64 scope link
valid_lft forever preferred_lft forever
[root@bigdata27 exam]# ip a s em1 |awk 'NR==1{print $1}'
2:
awk执行过程
‘NR==1{print $1}
条件: NR==1 找出第1行
动作: {print $1} 显示第1列
awk 行 与 列
行 record 记录
列 field 区域 字段
NR Number of Record 记录号 行号
[root@bigdata27 exam]# ip a s em1
2: em1: mtu 1500 qdisc mq state UP qlen 1000
link/ether 18:66:da:eb:0c:14 brd ff:ff:ff:ff:ff:ff
inet 172.16.10.27/24 brd 172.16.10.255 scope global em1
valid_lft forever preferred_lft forever
inet6 fe80::1a66:daff:feeb:c14/64 scope link
valid_lft forever preferred_lft forever
[root@bigdata27 exam]# ip a s em1 |awk 'NR==1{print $1}'
2:
[root@bigdata27 exam]# cat sed.txt
101.oldboy,CEO
102,zhangyao.CTO
103,Alex.COO
104,yy,CFO
105,feixue,CIO
110,lidao,COCO
[root@bigdata27 exam]# awk 'NR==3' /exam/sed.txt
103,Alex.COO
[root@bigdata27 exam]# awk -F ',' '{print $2}' /exam/sed.txt
CEO
zhangyao.CTO
Alex.COO
yy
feixue
lidao
-F 指定分隔符 指定新的菜刀
提取 ip a s em1 命令中的IP地址
[root@bigdata27 exam]# ifconfig em1 |awk 'NR==2{print $2}'
172.16.10.27
[root@bigdata27 exam]# ip a s em1 |awk 'NR==3{print $2}'
172.16.10.27/24
[root@bigdata27 exam]# ip a s em1 |awk -F '[ /]+' 'NR==3{print $3}'
172.16.10.27
取行 NR==1
取列 $数字
NF Number of Field 每行有多少列
$NF 最后一列
NR 行号
NF 列个数
$(NF-1) 倒数第2列
{print $1,$2,$3}
{print $NF}
显示 /etc/passwd 第1列,第3列和最后一列
找谁 条件?
[root@bigdata27 ~]# awk -F':' '{print $1,$3,$NF}' /etc/passwd
root 0 /bin/bash
bin 1 /sbin/nologin
daemon 2 /sbin/nologin
adm 3 /sbin/nologin
lp 4 /sbin/nologin
sync 5 /bin/sync
shutdown 6 /sbin/shutdown
halt 7 /sbin/halt
mail 8 /sbin/nologin
显示 /exam/sed.txt 文件的内容和行号
[root@bigdata27 exam]# cat -n sed.txt
1 101.oldboy,CEO
2 102,zhangyao.CTO
3 103,Alex.COO
4 104,yy,CFO
5 105,feixue,CIO
6 110,lidao,COCO
[root@bigdata27 exam]# awk '{print NR,$0}' sed.txt
1 101.oldboy,CEO
2 102,zhangyao.CTO
3 103,Alex.COO
4 104,yy,CFO
5 105,feixue,CIO
6 110,lidao,COCO
对比三剑客
grep 过滤 过滤速度最快
sed 过滤 替换 修改文件内容 (增删改查)
awk 过滤 取列 计算与统计
显示磁盘使用率大于10%的磁盘分区和挂载点(目录)
条件:磁盘使用率大于10%
$5>10
动作:显示分区和挂载点
print $1,$NF
[root@bigdata27 exam]# df -h |awk '$5>10{print $1,$NF}'
文件系统 挂载点
/dev/mapper/centos-root /
tmpfs /run
/dev/mapper/centos-home /data
/dev/loop0 /media
/dev/sda2 /boot
[root@bigdata27 exam]# df -h
件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 12G 39G 24% /
devtmpfs 12G 0 12G 0% /dev
tmpfs 12G 84K 12G 1% /dev/shm
tmpfs 12G 346M 12G 3% /run
tmpfs 12G 0 12G 0% /sys/fs/cgroup
/dev/mapper/centos-home 11T 3.8T 7.2T 35% /data
/dev/loop0 4.1G 4.1G 0 100% /media
/dev/sda2 497M 187M 311M 38% /boot
tmpfs 2.4G 16K 2.4G 1% /run/user/42
tmpfs 2.4G 0 2.4G 0% /run/user/0