file1包含:
someword0
someword2
someword4
someword6
someword8
someword9
someword1
file2包含:
someword2
someword3
someword4
someword5
someword7
someword11
someword1
所以我不想只拥有file1中哪些文件不包含的行。我怎么能用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.
答案 0 :(得分:1)
您可以使用grep -vf
:
grep -vwFf file2 file1
someword0
someword6
someword8
someword9
检查man grep
以获取此处使用的所有grep
选项的详细信息。
答案 1 :(得分:1)
您也可以使用comm
命令:
comm -23 file1 file2
说明:
comm
比较两个文件,并在3列中打印出file1,file2和两者中唯一的行。
使用选项-2和-3(或简称-23)会禁止打印这些列,因此您只需获得file1的唯一行。
答案 2 :(得分:0)
如果您的行是唯一的,请执行左连接并过滤掉两个表中存在的行。
join <(sort file1) <(sort file2) -o0,2.1 -a1 | awk '!$2'