您的位置:首页 > 运维架构 > Linux

linux命令应用之一

2015-08-17 14:24 417 查看
某个目录下有两个文件a.txt和b.txt.文件格式为(ip username),例如:

a.txt

127.0.0.1 zhangsan
127.0.0.1 wangxiao
127.0.0.2 lisi
127.0.0.3 wangwu

b.txt

127.0.0.4 lixiao
127.0.0.1 lisi
127.0.0.2 lisi

a.txt,b.txt 中至少 100 万行,用 linux命令行 实现下列要求(题目要求linux命令行方式。。。):
1)a.txt,b.txt 中各自的 ip 个数,ip 的总个数。
2)a.txt 中存在的 ip 而 b.txt 中不存在的 ip。
3)每个 username 出现的总个数,每个 username 对应的 ip 个数。

答案:

1:单个文件中ip个数不去重 cut -d ' ' -f 1 a.txt | wc -l

单个文件中ip去重后的总个数 cut -d ' ' -f 1 a.txt |sort | uniq |wc -l

ip总个数不去重 cut -d ' ' -f 1 a.txt b.txt | wc -l

ip去重后的总个数 cut -d ' ' -f 1 a.txt b.txt |sort | uniq |wc -l

2:a中存在而b中不存在的ip cut -d ' ' -f 1 a.txt b.txt |sort | uniq -u

3:每个 username 出现的总个数 cut -d ' ' -f 2 a.txt b.txt | sort | uniq -c

或者 awk '{arr[$2]++;}END{for(i in arr){print i , arr[i] }}' a.txt b.txt

每个 username 对应的 ip 个数 cut -d ' ' -f 1-2 a.txt b.txt | sort -k 2 | uniq -c | awk '{arr[$3]++;}END{for(i in arr){print i , arr[i] }}'
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: