awk 一些题目

1.1. 输出记录最多的IP

[腾讯面试题]一个文本类型的文件,里面每行存放一个登陆者的IP(某些行是重复的),写一个shell脚本输出登陆次数最多的用户。

Ip_input.txt的内容假设如下:

219.217.49.14

175.43.4.87

87.48.98.1

59.73.38.25

219.217.50.14

59.92.48.32

219.217.49.14

59.72.38.142

59.73.38.25

219.217.49.14

 

#! /bin/bash

# test.sh

sort ip_input | uniq -c | sort | tail -1 | awk '{print $2}' 或者:

sort ip_input | uniq -c | sort -r | head -1 | awk '{print $2}'

uniq -c 选项。它的作用是将重复行去掉并且在每行的前面添加此行重复的次数

sort命令的默认排序方式是升序,使用 -r 选项逆序排序结果,则出现次数最多的IP则排在了第一行

1.2. 处理一下文件内容,将域名取出并进行计数排数,如处理:

http://www.baidu.com/index.html

http://ww.baidu.com/1.html

http://www.baidu.com/2.html

http://post.baidu.com/index.html

http://mp3.baidu.com/index.html

http://www.baidu.com/3.html

http://post.baidu.com/2.html

得到如下结果:域名的出现次数,域名

4     www.baidu.com

2     post.baidu.com

1     mp3.baidu.com

 

shell程序如下:

方法一:

#cat file | sed -e 's/http:\/\///' -e 's/\/.*//'| sort | uniq -c | sort -nr | head -10

sort -n   依照数值的大小排序。

 

方法二:

#awk -F/  '{print $3}' file|sort -r|uniq -c|awk '{print $1 "\t",$2}'

1.3. a.log文件中提取包含"WARNING""FATAL",同时不包含"IGNOR"的行,然后提取以":"分割的第5个字段.

grep -E 'WARNING|FATAL' file|grep -v 'IGNOR'|awk -F: '{print $5}'

1.4. shell环境中,如何查看远程Linux系统运行了多少时间?

ssh user@被监控的主机ip "uptime"|awk '{print $3,$4}'

1.5. 腾讯一shell试题.

假设qq.tel文件内容:

12334:13510014336

12345:12334555666

12334:12343453453

12099:13598989899

12334:12345454545

12099:12343454544

分类如下:

[12334]

13510014336

12343453453

...........

[12099]

13598989899

12343454544

............

实现如下:

cat qq.tel|sort -r |awk -F: '{if(tmp!=$1) {tmp=$1;print "["tmp"]"} print $2}'

 

cat e | sort -r | awk -F: '{if(head!=$1){print $1;head=$1;} print $2} '

posted @ 2018-10-30 11:56  千米屠苏  阅读(458)  评论(0编辑  收藏  举报