面试题答案
一键面试实现思路
- 使用
sort
命令分别对两个文件进行排序,因为comm
命令要求输入文件必须是已排序的。 - 使用
comm
命令对比两个已排序的文件,comm
命令会生成三列输出,第一列是仅在第一个文件中出现的行,第二列是仅在第二个文件中出现的行,第三列是在两个文件中都出现的行。 - 通过
grep
过滤掉第三列(即两个文件都出现的行),然后统计剩余行数,即可得到不同IP地址的总数。
具体命令
sort bigfile1.txt > sorted1.txt
sort bigfile2.txt > sorted2.txt
comm -12 sorted1.txt sorted2.txt | wc -l
上述命令中:
sort bigfile1.txt > sorted1.txt
:对bigfile1.txt
进行排序并输出到sorted1.txt
。sort bigfile2.txt > sorted2.txt
:对bigfile2.txt
进行排序并输出到sorted2.txt
。comm -12 sorted1.txt sorted2.txt
:-1
选项表示不显示仅在第一个文件中出现的行,-2
选项表示不显示仅在第二个文件中出现的行,这样输出的就是两个文件都出现的行。| wc -l
:统计前面命令输出的行数,即得到两个文件中不同IP地址的总数。
注:最后可删除临时生成的 sorted1.txt
和 sorted2.txt
文件以清理空间。