awk的基本用法
格式
awk动作文件名/文件名/awk/动作
打印当前,打印打印,0美元当前行
<代码> [root@zhaocheng ~] #回声“awk是非常有用的”| awk“{打印$ 0}” awk是非常有用的 root@zhaocheng ~ #猫鱼片 根:1美元dDTFylQ3 .vTZKpm7mrra9WMsxvBfW美元。:18241:0:99999:7 本:*:17834:0:99999:7:爸爸 lp: *: 17834:0:99999:7ada 同步:*:17834:0:99999:7:::gg 关闭:*:17834:0:99999:7::哒 停止:*:17834:0:99999:7::fsda 18289年nginx ! !::::::: daaf 18297年rabbitmq ! !::::::达达代码>
比如取这个文件的第一个域
- f分隔符,“:“以冒号为分隔符
'{打印1美元}'打印第每一列,这里就是以冒号为分隔符打印每列的第一个域
<代码> [root@zhaocheng ~] #猫鱼片| awk - f”:““{打印1美元}” 根 箱子 lp 同步 关闭 停止 nginx rabbitmq 代码>
比如以这个文件打印最后一个域,这里打印的时候还是要以什么为分隔符,有的可能是空格
<代码> [root@zhaocheng ~] #猫鱼片| awk - f‘:’“{打印$ NF}” 7 爸爸 7 ada gg 达 fsda daaf 达达代码>
或者取中间的一个域,可以使用美元(NF-1),处理的是1行从后往前1
<代码> [root@zhaocheng ~] #猫鱼片|尾1 systemctl开始mysqld (root@zhaocheng ~) #菲猫尾巴| 1 | awk - f”“‘{打印$ (NF-1)} 开始代码>
或者想知道处理的第几行,可以使用NR,这里也就是相当于加了一个“),
<代码> [root@zhaocheng ~] #菲猫尾巴| 3 | awk - f”“{打印NR”)“$ 2} 1) 2) 3)开始代码> >之前比如取ifconfig的IP,这里取IP的方法比较多
<代码> [root@zhaocheng ~] # | grep eth0 ip 2:eth0: & lt;广播、多播、,LOWER_UP>mtu 1500 qdisc pfifo_fast状态默认qlen 1000组 全球eth0 inet 172.17.0.8/20 brd 172.17.15.255范围 这里是先取的打印每列的第2个域,使用尾巴1倒数第一行,使用awk - f以/为分隔符取第一个域 (root@zhaocheng ~) # ip | grep eth0 | awk{打印$ 2}的尾巴| 1 | awk - f“/薄皗打印1美元}” 172.17.0.8 代码>或者直接使用grep过滤出来,使用awk以空格为分隔符,直接取第二个域,再?号的第一个域
<代码> [root@zhaocheng ~] # ip | grep eth0 | grep inet | awk - f”“‘{打印$ 2}| awk - f“/薄皗打印1美元}” 172.17.0.8 代码>也可以使用sed取它的行数,再使用awk精确匹配
<代码> [root@zhaocheng ~] # ip | sed - n ' 9 p ' | awk - f”“‘{打印$ 2}’| awk - f“/薄皗打印1美元}” 172.17.0.8 代码>awk的其他变量
FS:字段分隔符,默认是空格和制表符。
RS:行分隔符,用于分割每一行,默认是换行符。
OFS:输出字段的分隔符,用于打印时分隔字段,默认为空格。
口服补液盐:输出记录的分隔符,用于打印时分隔记录,默认为换行符。
OFMT:数字输出的格式,默认为% .6g。比如打印出这个文件中带有nginx子段的所有行
<代码> [root@zhaocheng ~] # awk - f”:“/nginx/{打印$ 0}的鱼片 18289年nginx ! !::::::: daaf dadad: nginx: sdada 代码>比如打印菲文件第三行以前的行,以:为分隔符打印第三个域
<代码> [root@zhaocheng ~] # awk - f”:“《NR祝辞3{打印3美元}的鱼片 17834 17834 17834 18289年 18297 sdada 代码>awk命令常用命令