bash删除文件中包含其他文件行的行

bash删除文件中包含其他文件行的行,bash,file,shell,line,Bash,File,Shell,Line,文件1包含: someword0 someword2 someword4 someword6 someword8 someword9 someword1 someword2 someword3 someword4 someword5 someword7 someword11 someword1 文件2包含: someword0 someword2 someword4 someword6 someword8 someword9 someword1 someword2 someword3 so

文件1包含:

someword0
someword2
someword4
someword6
someword8
someword9
someword1
someword2
someword3
someword4
someword5
someword7
someword11
someword1
文件2包含:

someword0
someword2
someword4
someword6
someword8
someword9
someword1
someword2
someword3
someword4
someword5
someword7
someword11
someword1
因此,我不希望只有文件1中的行,而文件2不包含这些行。在bash中如何执行此操作

这就是答案:

grep -v -x -f file2 file1

    -v for select non-matching lines
    -x for matching whole lines only
    -f f2 to get patterns from f2.

您可以使用
grep-vf

grep -vwFf file2 file1
someword0
someword6
someword8
someword9

有关此处使用的所有
grep
选项的详细信息,请查看
man-grep

您也可以使用
comm
命令:

comm -23 file1 file2
说明:

comm
比较两个文件,并在3列中打印文件1、文件2特有的行以及这两个文件中的行


使用选项-2和-3(或简单地使用-23)会禁止打印这些列,因此您只需获得文件1的唯一行。

如果您的行是唯一的,请执行左连接并过滤掉两个表中存在的行

join <(sort file1) <(sort file2) -o0,2.1 -a1 | awk '!$2'

加入更好副本的可能副本:是的。我在谷歌搜索,但我没有找到这个。谢谢。这确实需要对文件进行词汇排序。