如何删除另一个文件中指定的所有行

时间:2015-07-10 12:28:16

标签: linux bash

我有两个(已排序的)文本文件:

A.TXT

1
2
3 
4

b.txt

1
3
7

我想创建一个文件,仅列出a.txt中删除文件b.txt所有行的行。
所以结果应该是:

的Result.txt

2
4

2 个答案:

答案 0 :(得分:4)

grep a.txt -F -x -v --file=b.txt                                   
            |  |  |    +                                           
            |  |  |    +--> obtain PATTERN from file                
            |  |  +-------> invert match                           
            |  +----------> force PATTERN to match only whole lines
            +-------------> PATTERN is a set of newline-separated fixed strings

输出:

2
4

答案 1 :(得分:3)

假设a.txt和b.txt已经按词汇排序:

comm -23 a.txt b.txt

通常comm读取两个文件,应该按词法排序, 并生成三个文本列作为输出:仅在file1中的行;仅在file2中的行;和两个文件中的行。

选项-23禁止第二列和第三列。