оставил внешнее объединение, сравнив 2 файла - PullRequest
2 голосов
/ 01 октября 2011

У меня есть 2 файла, как показано ниже:

success.txt
amar
akbar
anthony
john
jill
tom

fail.txt
anthony
tom

Я хочу удалить записи из sucess.txt, которые совпадают с fail.txt

Expected output:
amar
akbar
john
jill

Ответы [ 3 ]

2 голосов
/ 02 октября 2011

awk one-liner: также сохранить первоначальный заказ

awk 'NR==FNR{a[$0]=1;next;}!($0 in a)' fail.txt success.txt
2 голосов
/ 01 октября 2011

Я бы использовал fgrep - если доступно - поскольку вы используете фиксированные строки, это должно быть более эффективным.

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

Вам необходим параметр -x, чтобы обеспечить соответствие только целых строк, в противном случае произойдет сбой, например, tom будет соответствовать успехам, например tomas.

1 голос
/ 02 октября 2011

Там is a Posix-стандарт join (1) программа во всех современных системах Unix, см. man join.

$ join -v1 success.txt fail.txt
...