awk 面试题
英语文化交流 > 技术博客 > awk 面试题
awk 面试题
时间: 分类:技术博客

第17章 awk
1、⽂件datafile内容如下:
Mike Harrington:[510] 548-1278:250:100:175
Christian Dobbins:[408] 538-2358:155:90:201
Suan Dalsass:[206] 654-6279:250:60:50
Archie McNichol:[206] 548-1348:250:100:175
Jody Savage:[206] 548-1278:15:188:150
Guy Quigley:[916] 343-6410:250:100:175
Dan Saveage:[406] 298-7744:450:300:275
Nancy McNeil:[206] 548-1278:250:80:75
John Goldenrod:[916] 348-4278:250:100:175
Chet Main:[510] 548-5258:50:95:135
Tom Savage:[408] 926-3456:250:168:200
Elizabeth Stachelin:[916] 440-1763:175:75:300
上面的数据表中包含名字、电话号码和过去三个月里的捐款,下面分别用awk解答:
1)显示所有电话号码?
答:awk -F ":" '{print $2}' datafile.txt
2)显示Dan的电话号码?
答:awk -F ":" '/^Dan/{print $2}' datafile.txt
3)显示Suan的捐款和电话?
答:awk -F ":" '/^Suan/{print $3,$4,$5,$2}' datafile.txt
4)显示所有以D开头的姓?
答:awk -F ":" '{print $1}' datafile.txt | awk '{print $2}'|awk '/^D/'
5)显示所有以一个C或E开头的名?
答:awk -F ":" '{print $1}' datafile.txt | awk '{print $1}'|awk '/^[CE]/'
6)显示所有只有四个字符的名?
答:awk -F ":" '{print $1}' datafile.txt | awk '{if(length($1)==4)print $1}'
7)显示所有区号为916的人名?
答:awk -F ":" '/916/{print $1}' datafile.txt
2019/4/13 第17章 awk 面试题(参考答案).md
file:///C:/Users/chen/Desktop/练习题2.0/17文本处理三剑客之AWK/第17章 awk 面试题(参考答案).html 2/6
8)显示Mike的捐款,显示每个值时都有$开头,如$250$100$175?
答:awk -F ":" '/^Mike/{print "$"$3"$"$4"$"$5}' datafile.txt
9)显示姓,其后跟一个逗号和名,如Jody,Savage?
答:awk -F ":" '{print $1}' datafile.txt | awk '{print $2,",",$1}'
10)写一个awk的脚本,作用:
(1)显示Savage的全名和电话号码
(2)显示Cher的捐款
(3)显示所有头一个月捐款$250的人名
答:vim awk
#!/bin/awk -f
BEGIN{FS=":"}
{if($1 ~/Savage/) print $1":"$2}
{if($1~/^Chet/) print "$"$3":""$"$4":""$"$5}
{if($3==250) print $1}
awk -f awk datafile.txt
2、⽂件名AccQryFree2016.log,存在⽬录/root/boss/log/下,内容:
<80:21308> 12:00:00 service start query_value,exited with value 0;
<80:21308> 12:00:01 select from crm_user where sts=1;exited with value 0;
<80:21308> 12:10:01 use db:db_ngboss[srv_zw1]
<80:21309> 12:20:00 service start query_value,exited with value 0;
<80:21309> 12:22:01 select
from crm_user where sts=1;exited with value 0;
<80:21309> 12:23:01 use db:db_ngboss[srv_zw1]
1)统计出文件中字符串exited with value 0出现的次数?
答:grep -o "exited with value 0" AccQryFree2016.log|uniq -c
2)使用vi编辑器,将文件中exited with value 0替换为EXITED WITH VALUE 0?
答:vim /root/boss/log/AccQryFree2016.log
:%s/exited with value 0/EXITED WITH VALUE 0/g
3)写出带有exited with value 0的时间列全部输出?
答:grep "exited with value 0" AccQryFree2016.log|awk -F " " ' {print $2}'
4)把该文件压缩?
答:tar jcvf AccQryFree2016.log.tar.bz2 /root/boss/log/AccQryFree2016.log
2019/4/13 第17章 awk 面试题(参考答案).md
file:///C:/Users/chen/Desktop/练习题2.0/17文本处理三剑客之AWK/第17章 awk 面试题(参考答案).html 3/6
5)配置一个定时任务,将该文件在每周五下午6点进行删除?
答:crontab -e
0 18 5 rm -rf /root/boss/log/AccQryFree2016.log
3、使⽤netstat和awk统计服务器出现tcp⽹络状态并按数量排序?
netstat -tan |grep "^tcp\b" |awk '{print $5}' |sort | uniq -c| sort -nr
4、ll | awk '{print $3, "owns",$9}'这条命令在做什么?
显示当前目录下,文件或目录的拥有者,打印owns,目录名称。
5、实现查询⽂件file1⾥⾯空格开始的所在的⾏号?
答:grep -n -E '^[[:sapce:]] ' file1|awk -F: '{print $1}'
6、linux系统中,(awk)命令可以从⽂本⽂件的每⼀⾏中截取指定的内
容的数据。
7、使⽤awk命令,计算⼀个⽬录下⽂件⼤⼩的总和?
答:ll |awk 'BEGIN{sum=0}{sum=sum+$5}END{print sum}'
8、⼀个⽂件有a、b、c三列,使⽤什么命令取出其中第三列,并排序?
答:awk '{print $3}' 文件|sort
9、使⽤awk统计当前主机的并发访问量?
2019/4/13 第17章 awk 面试题(参考答案).md
file:///C:/Users/chen/Desktop/练习题2.0/17文本处理三剑客之AWK/第17章 awk 面试题(参考答案).html 4/6
答:netstat -tan | awk '/^tcp/ {++state[$NF]} END {for(key in state) print
key,"\t",state[key]}'
显示结果:
LAST_ACK 1
SYN_RECV 14
ESTABLISHED 79
FIN_WAIT1 28
FIN_WAIT2 3
CLOSING 5
TIME_WAIT 1669
解释:
CLOSED:无连接是活动的或正在进行
LISTEN:服务器在等待进入呼叫
SYN_RECV:一个连接请求已经到达,等待确认
SYN_SENT:应用已经开始,打开一个连接
ESTABLISHED:正常数据传输状态
FIN_WAIT1:应用说它已经完成
FIN_WAIT2:另一边已同意释放
ITMED_WAIT:等待所有分组死掉
CLOSING:两边同时尝试关闭
TIME_WAIT:另一边已初始化一个释放
LAST_ACK:等待所有分组死掉
10、统计apache访问⽇志流量排名前10个ip?
答: cat access_log | awk ’{print $1}’ | sort | uniq -c | sort -n -r | head<br/>-10
解法2: awk ‘{a[$1] += 1;} END {for (i in a) printf(“%d %s\n”, a[i], i);}’ 日志文<br/>件 | sort -n | tail
11、使⽤netstat -an输出格式,请编写脚本,统计输出连接到本地主机
数最多的10个ip,并按连接数从多到少排序?
tcp 0 52 172.18.118.155:22 172.18.116.232:49916 ESTABLISHED
答:#!/bin/sh
top10ip=ss -nt | grep 'ESTAB' | awk '{print $5}' | cut -d: -f1 | grep<br/>"^[[:digit:]]\+.*" | sort | uniq -c | sort -rnk1 | awk '{print $2,"\t",$1}' |<br/>head
echo "连接到本地主机最多的10个ip是:$top10ip"
2019/4/13 第17章 awk 面试题(参考答案).md
file:///C:/Users/chen/Desktop/练习题2.0/17文本处理三剑客之AWK/第17章 awk 面试题(参考答案).html 5/6
12、nginx的access.log⽇志如下,⽤shell实现,将状态码为200的请求
的ip访问排名前10个列出来:
172.18.116.232 - - [18/May/2018:00:20:29 -0400] "GET / HTTP/1.1" 304 0 "-"
"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/66.0.3359.117 Safari/537.36" "-"
172.18.116.232 - - [18/May/2018:00:20:29 -0400] "GET / HTTP/1.1" 304 0 "-"
"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/66.0.3359.117 Safari/537.36" "-"
答:awk '($9 ~ /200/)' access.log | awk '{print $9,$7}' | sort -nr |head -n10
13、处理以下⽂件内容,将域名取出并计数排序:
http://****/index.html
http://****/1.html
http://****/index.html
http://****/index.html
http://****/3.html
http://****/2.html
得到如下结果:
域名出现的次数 域名
3 ****
2 ****
1 MP3.baidu.com
如何取出?
答:awk -F “/” ‘{print $3}’|sort|uniq -c|sort -nr
14、统计apaceh的access.log中访问量最多的5个ip?
2019/4/13 第17章 awk 面试题(参考答案).md
file:///C:/Users/chen/Desktop/练习题2.0/17文本处理三剑客之AWK/第17章 awk 面试题(参考答案).html 6/6
172.18.116.232 - - [21/May/2018:05:29:11 -0400] "GET /favicon.ico HTTP/1.1" 404
209 "http://****/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.117 Safari/537.36"
答: cat access_log | awk ’{print $1}’ | sort | uniq -c | sort -nr | head -5

随机阅读

Copyright © 2017 英语文化交流 All Rights Reserved.