1、文件ip_list.txt如下格式,请提取” .magedu.com” 前面的主机名部分并写入到回到该文件中
1 blog.magedu.com
2 www.magedu.com

999 study.magedu.com

文本处理3剑客 awk_第1张图片


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

文本处理3剑客 awk_第2张图片


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

文本处理3剑客 awk_第3张图片


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

文本处理3剑客 awk_第4张图片



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

for i in {1..5000};do echo -n $((($RANDOM+90000)%100000)),>>random.txt;done

image


6、解决DOS***生产案例:根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,

即调用防火墙命令封掉对应的IP,监控频率每隔5分钟。防火墙命令为:iptables -A INPUT -s IP -j REJECT

image

image



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

文本处理3剑客 awk_第5张图片


文本处理3剑客 awk_第6张图片



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|



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.txt

image

上面是找网上的大神答案 ,实在烧脑, 下面是我自己写的,以后再看吧


awk -v FS="|" -v OFS= "|" '/^[[:digit:]]/ {min[$1]=999999;max[$1]=0; if (min[$1]>count[$2]){min[$1]=count[$2]};\
if (max[$1] END{for (i in count) {print count[$i],min[$i],max[$i],count[$i] }}' inode.txt