1、文件host_list.log如下格式,请提取".magedu.com"前面的主机名部分并写入到回到该文件中
1 www.magedu.com
2 b1og.magedu.com
3 study.magedu.com
4 1inux.magedu.com
5 python.magedu.com
.....
999 study.magedu.com
awk -F'[ .]' '{print $2}' host_list.log >>host_list.log
2、统计/etc/fstab文件中每个文件系统类型出现的次数
[root@centos8 ~]#awk '/^UUID/{print $3}' /etc/fstab |sort |uniq -c
1 ext4
1 swap
2 xfs
3、统计/etc/fstab文件中每个单词出现的次数
awk -F'[^[:alnum:]_]+' '{for(i=1;i<=NF;i++){print $i}}' /etc/fstab |awk '/[[:alnum:]_]+/{print $1}'|sort |uniq -c |sort -nr
awk '{gsub(/[^[:alnum:]_]/," ")}{for(i=1;i<=NF;i++){print $i}}' /etc/fstab |sort|uniq -c|sort -nr
awk '{gsub(/[^[:alnum:]_]/," ")}{for(i=1;i<=NF;i++)word[$i]++}END{for(i in word)print i,word[i]}' /etc/fstab |sort -k2nr
4、提取出字符串Yd$C@M05MB9%9&Bdh7dq+ Wixp3vpw中的所有数字
[root@centos8 ~]#echo "Yd$C@M05MB9%9&Bdh7dq+ Wixp3vpw" |awk 'gsub(/[^0-9]/,"")'
059973
5、有一文件记录了1-100000之间随机的整数共5000个,存储的格式100,505.,9…请取出其中最大和
最小的整数
awk -F',' '{max=$1;min=$1;for(i=1;i<=NF;i++){if($i>max){max=$i}if($i<min){min=$i}}print min,max}' f1.txt
6、解决Dos攻击生产案例:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为: iptables -A INPUT-s IP j REJECT
[root@centos8 ~]#cat ss.sh
#!/bin/bash
#Version: 1.1
#**********************************************************************
ss -nt|awk -F' +|:' 'NR!=1{ip[$(NF-2)]++}END{for(i in ip){if(ip[$i]>=100){system("iptables -A INPUT -s "i" -j REJECT")}}}'
[root@centos8 ~]#chmod +x ss.sh
[root@centos8 ~]#crontab -e
*/5 * * * * root ss.sh#要写路径
[root@centos8 ~]#cat ss.sh
#!/bin/bash
#Version: 1.1
#**********************************************************************
while :;do
ss -nt|awk -F' +|:' 'NR!=1{ip[$(NF-2)]++}END{for(i in ip){if(ip[$i]>=100){system("iptables -A INPUT -s "i" -j REJECT")}}}'
sleep 300
done
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@centos8 ~]#awk -F'/' '{FQDN[$3]++}END{for(i in FQDN){print FQDN[i],i}}' file |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 I endnumber I counts|
106 | 3363120000 | 3363129999 | 10000 |
106 | 3368560000 | 3368579999 | 20000 |
310 | 3337000000 | 3337000100 | 101 |
310 | 3342950000 I 3342959999 | 10000 |
310 | 3362120960 I 3362120961 | 2 |
311 | 3313460102 | 3313469999 | 9898 |
311 | 3313470000 I 3313499999 | 30000 |
311 | 3362120962 | 3362120963 | 2 |
输出的结果格式为:
310 | 3337000000 | 3362120961 | 10103 |
311 | 3313460102 | 3362120963 | 39900 |
106 | 3363120000 I 3368579999 | 30000 |
[root@centos8 ~]#awk -F'|' -v OFS='|' 'NR==1{print $0} \
NR>1{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.txt
inode|beginnumber|endnumber|counts|
106|3363120000|3368579999|30000|
310|3337000000|3362120961|10103|
311|3313460102|3362120963|39900|
[root@centos8 ~]#cat test.awk
#!/bin/awk
NR==1{print $0};NR>1{array[$1][$2][$3][$4]++}NR==2{val=$1;min=$2;max=$3;num=0}
END{
for(i in array)
for (j in array[i])
for (k in array[i][j])
for (h in array[i][j][k])
{if(i==val)
{j<=min?min=j:min=min
k>=max?max=k:max=max
num+=h}
else {print val,min,max,num "|"
val=i
min=j
max=k
num=h
}}print val,min,max,num "|"}
[root@centos8 ~]#awk -F'|' -v OFS='|' -f test.awk inode.txt
inode|beginnumber|endnumber|counts|
106|3363120000|3368579999|30000|
310|3337000000|3362120961|10103|
311|3313460102|3362120963|39900|