某个目录下有两个文件a.txt和b.txt.文件格式为(ip username),例如: a.txt 210.121.123.12 zhangsan 34.23.56.78 lisi 11.56.56.72 wanger b.txt 58.23.53.132 liuqi 34.23.56.78 liba 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 }}' 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 }}'