linux - 检查文件的所有行是否包含在另一个文件中

标签 linux bash file

我有一个文件:a.txt,每行都有一个数字。我还有另一个文件 b.txt,每行也有一个数字。
我如何检查 a.txt 文件中的所有行是否包含在 b.txt 中?

最佳答案

您可以使用 comm为了那个原因。

如果a.txtb.txt已经排序(词法和升序),你只需要

comm -23 a.txt b.txt

或者也许

comm -23 a.txt b.txt | wc -l

如果没有输出(或者如果 wc -l 返回“0”),那么 a.txt 中的每一行在b.txt ( -2 抑制仅在 b.txt 中的行的输出,-3 抑制两个文件中的行的输出)。

如果文件未排序,您可以使用进程替换将每个文件的排序输出传递给 comm :

comm -23 <(sort a.txt) <(sort b.txt)

进程替换<(COMMAND)放置 COMMAND 的输出放入 FIFO 或/dev/fd 中的文件(取决于系统支持的内容)。在命令行上 <(COMMAND)然后替换为该文件的名称作为命令行扩展的一部分。

这确实检查行,所以如果一个数字在 a.txt 中出现两次但在 b.txt 中只有一次这将从 a.txt 输出重复的行.如果您不关心重复项,请使用 sort -u FILE而不是 sort FILE (或 sort FILE | uniq,以防您的 sort 没有用于唯一排序的开关)

关于linux - 检查文件的所有行是否包含在另一个文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27396731/

相关文章:

Linux:从命令行打开 URL,然后等待指定的时间,然后关闭 Web 浏览器

linux - 如何复制/dev/ttyUSB0流?

c - 64 位到 10 位的哈希函数

linux - 无法在 GDB 中加载自定义 ELF 可执行文件

python - crontab 没有完全工作。仅运行 echo 语句

file - 为什么大多数文件扩展名不超过 3 个字符?

c# - 如何将多个字节数组组合成一个以创建文件

java - 如何将图库中的图像作为文件参数

linux - 查找带有重音字符的 unix 文件

linux - 如何在Solaris中查找最新日志详细信息