通过比较2个文件左外连接

时间:2011-10-01 08:35:44

标签: sed awk grep

我有2个文件,如下所示:

success.txt
amar
akbar
anthony
john
jill
tom

fail.txt
anthony
tom

我想从sucess.txt中删除那些与fail.txt匹配的记录

Expected output:
amar
akbar
john
jill

3 个答案:

答案 0 :(得分:2)

我使用fgrep - 如果可用 - 因为你使用的是固定字符串,它应该更有效率。

fgrep -v -x -f fail.txt success.txt

您需要使用-x选项以确保只匹配整行,否则会失败,例如tom会匹配tomas等成功。

答案 1 :(得分:2)

awk one-liner:还保留原始订单

awk 'NR==FNR{a[$0]=1;next;}!($0 in a)' fail.txt success.txt

答案 2 :(得分:1)

在所有现代Unix系统中, 是一个Posix-standard join(1)程序,see man join.

$ join -v1 success.txt fail.txt