bash删除文件中包含其他文件行的行
文件1包含: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
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'
加入更好副本的可能副本:是的。我在谷歌搜索,但我没有找到这个。谢谢。这确实需要对文件进行词汇排序。