MST

星途 面试题库

面试题:Bash中comm命令复杂场景应用

现有两个较大的文本文件bigfile1.txt和bigfile2.txt,每个文件都包含上万行数据,每行是一个IP地址。要求使用comm命令结合其他必要的Bash工具,统计出两个文件中不同IP地址的总数,说明实现思路并写出具体命令。
28.3万 热度难度
编程语言Bash

知识考点

AI 面试

面试题答案

一键面试

实现思路

  1. 使用 sort 命令分别对两个文件进行排序,因为 comm 命令要求输入文件必须是已排序的。
  2. 使用 comm 命令对比两个已排序的文件,comm 命令会生成三列输出,第一列是仅在第一个文件中出现的行,第二列是仅在第二个文件中出现的行,第三列是在两个文件中都出现的行。
  3. 通过 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.txtsorted2.txt 文件以清理空间。