首页 > 其他 > 详细

18.第五章 文本三剑客AWK

时间:2020-12-27 18:04:48      阅读:30      评论:0      收藏:0      [点我收藏+]

第六部分 awk

1、文件host_list.log如下格式,请提取“.magedu.com”前面的主机名部分并写入到回到该文件中

1 www.magedu.com
2 blog.magedu.com
3 study.magedu.com
4 linux.magedu.com
5 python.magedu.com
......
999 study.magedu.com
root@ubuntu2004:~# awk -F‘[ .]‘ ‘{print $2}‘ host_list.log >> host_list.log 
root@ubuntu2004:~# cat host_list.log 
1 www.magedu.com
1 www.magedu.com
2 blog.magedu.com
3 study.magedu.com
4 linux.magedu.com
5 python.magedu.com
......
999 study.magedu.com
www
blog
study
linux
python

study

2、统计/etc/fstab文件中每个文件系统类型出现的次数

[root@centos8 ~]# awk -F‘ +‘ ‘/^UUID/{print $3}‘ /etc/fstab |uniq -c
      3 xfs
      1 swap
      
root@ubuntu2004:~# awk  ‘/^\/dev/{print $3}‘ /etc/fstab |uniq -c
      3 ext4
      1 swap

3、统计/etc/fstab文件中每个单词出现的次数

[root@centos8 ~]# awk  ‘{for(i=1;i<=NF;i++)word[$i]++}END{for (a in word) print a,word[a]}‘   /etc/fstab 
After 1
Dec 1
UUID=c95f6e17-b3b2-4f03-bb5d-d6ae98d34a10 1
man 1
to 1
2020 1
and/or 1
maintained 1
xfs 3
UUID=38f70f3b-af27-4b05-8d97-c6479d4f41c9 1
Accessible 1
# 10
‘systemctl 1
systemd 1
are 1
defaults 4
blkid(8) 1
/ 1
0 8
See 1
Mon 1
Created 1
daemon-reload‘ 1
on 1
mount(8) 1
UUID=bf7d3f9f-5c92-4681-81ca-344e28526d53 1
generated 1
anaconda 1
fstab(5), 1
none 1
update 1
/boot 1
editing 1
UUID=e9ed4f84-ca16-41fd-94a0-e9a5c65506f3 1
findfs(8), 1
info. 1
by 2
/etc/fstab 1
pages 1
this 2
08:59:54 1
run 1
/data 1
more 1
21 1
from 1
swap 1
filesystems, 1
‘/dev/disk/‘. 1
reference, 1
for 1
file, 1
under 1
file. 1
units 1

4、提取出字符串Yd$C@M05MB%9&Bdn7dq+YVixp3vpw中所有数字

root@ubuntu2004:~# echo "Yd$C@M05MB%9&Bdh7dq+YVixp3vpw" | awk  ‘{gsub(/[^0-9]/,"");print $0}‘
05973

5、有一个文件记录了1-100000之间随机的整数共5000个,存储的格式100,50,35,89...请取出其中最大和最小的整数

root@ubuntu2004:~# for i in {1..5000};do echo -n $((($RANDOM+90000)%100000)),>>random.txt;done
root@ubuntu2004:~# awk -F, ‘{max=$1;min=$1;for(i=1;i<NF;i++){if($i>max){max=$i}else{if($i<min){min=$i}}}}END{print "最大值:"max,"最小值:"min}‘ random.txt 
最大值:99983 最小值:11

6、解决DOS攻击生产案例:根据web日志或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT

root@ubuntu2004:~# ss -nt | awk -F " +|:" ‘{ip[$4]++}END{for(i in ip){if(ip[i]>100){system("iptables -A INPUT -s "i" -j REJECT")}}}‘

7、将以下文件内容中FQDN取出并根据其进行计数从高到低排序

http://mail.magedu.com/index.html
http://www.magedu.com/test.html
http://study.magedu.com/index.html
http://blog.magedu.com/index.html
http://www.magedu.com/images/logo.jpg
http://blog.magedu.com/20080102.html
http://www.magedu.com/images/magedu.jpg
root@ubuntu2004:~# awk -F"/" ‘{url[$3]++}END{for(i in url){print url[i],i}}‘ url.log |sort -nr
3 www.magedu.com
2 blog.magedu.com
1 study.magedu.com
1 mail.magedu.com

8、将以下文件以inode为标记,对inode相同的counts进行累加,并且统计出同意inode中,beginnumber的最小值和endnumber的最大值

inode|beginnumber|endnumber|counts|
106|3363120000|3363129999|10000|
106|3368560000|3368579999|20000|
310|3337000000|3337000100|101|
310|3342950000|3342959999|10000|
310|3362120960|3362120961|2|
311|3313460102|3313469999|9898|
311|3313470000|3313499999|30000|
311|3362120962|3362120963|2|

输出的结果格式为:

310|3337000000|3362120961|10103|
311|3313460102|3362120963|39900|
106|3363120000|3368579999|30000|
[root@centos8 ~]# awk -F‘|‘ -v OFS=‘|‘ ‘/^[0-9]/{inode[$1]++; if(!bn[$1]){bn[$1]=$2}else if(bn[$1]>$2){bn[$1]=$2}; if(en[$1]<$3)en[$1]=$3;cnt[$1]+=$(NF-1)} END{for(i in inode)print i,bn[i],en[i],cnt[i]}‘ inode.log 
106|3363120000|3368579999|30000
310|3337000000|3362120961|10103
311|3313460102|3362120963|39900

18.第五章 文本三剑客AWK

原文:https://www.cnblogs.com/neteagles/p/14197938.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!