我有一个文件:a.txt
,每行都有一个数字。我还有另一个文件 b.txt
,每行也有一个数字。
我如何检查 a.txt
文件中的所有行是否包含在 b.txt
中?
最佳答案
您可以使用 comm
为了那个原因。
如果a.txt
和 b.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/