Подтвердить что ты не робот

Печатать строки из одного файла, которые не содержатся в другом файле

Я хочу напечатать строки, которые находятся в одном файле, но не в другом файле. Тем не менее, ни один файл не сортируется, и мне нужно сохранить исходный порядок в обоих файлах.

 contents of file1:
 string2
 string1
 string3

 contents of file2:
 string3
 string1

 Output:
 string2

Есть ли простой script, который я могу выполнить в?

4b9b3361

Ответ 1

fgrep -x -f file2 -v file1

-x соответствует всей строке

-f FILE принимает шаблоны из FILE

-v инвертирует результаты (показывает несоответствие)

Ответ 2

В Perl загрузите файл2 в хэш, затем прочитайте файл1, выведя только строки, которые не были в файле2:

use strict;
use warnings;

my %file2;
open my $file2, '<', 'file2' or die "Couldn't open file2: $!";
while ( my $line = <$file2> ) {
    ++$file2{$line};
}

open my $file1, '<', 'file1' or die "Couldn't open file1: $!";
while ( my $line = <$file1> ) {
    print $line unless $file2{$line};
}

Ответ 3

awk 'FNR==NR{a[$0];next} (!($0 in a))' file2 file1

Ответ 4

comm <(sort a) <(sort b) -3 → Строки в файле b, которые не находятся в файле a