[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 

18-Linux不会别做运维-Linux三剑客之awk-上部_第1张图片

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