码迷,mamicode.com
首页 > 系统相关 > 详细

18-Linux不会别做运维-Linux三剑客之awk-上部

时间:2019-10-18 09:31:40      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:行号   for   lin   img   bigdata   cat   int   ali   number   

[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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 最后一列

$(NF-1) 倒数第2列

{print $1,$2,$3}
{print $NF}

显示 /etc/passwd 第1列,第3列和最后一列

找谁 条件?

18-Linux不会别做运维-Linux三剑客之awk-上部

标签:行号   for   lin   img   bigdata   cat   int   ali   number   

原文地址:https://blog.51cto.com/1674389/2443403

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!