Сравните три файла: строки присутствуют в одном, но нет в другом, используя сравнение столбцов

[115958] Просто используйте '-f' и '-v' с grep:

1
13.04.2017, 15:36
2 ответа

Если вам так нравится awk

awk '
FILENAME != ARGV[3] {
    m[$2,$3] = 1
    next
    }
!(($2,$3) in m)
' file3.txt file2.txt file1.txt > out.txt

, так как для меня намного легко

cut -d" " -f 2,3 file2.txt file3.txt | grep -v -f - file1.txt > out.txt
3
27.01.2020, 23:20

Возможное решение с awk :

awk 'FILENAME == ARGV[1] {
    m[$2,$3] = $0;
    next;
}
FILENAME == ARGV[2] {
    if (!(($2,$3) in m)) {
        m[$2,$3] = $0;
    }
    next;
}
{
    if (!(($2,$3) in m)) {
        print $0 >"out.txt";
    }
}' file3.txt file2.txt file1.txt

Сначала мы прочитаем первый файл и создайте массив с Keys Column 2 и 3.
Затем мы читаем второй файл, и мы проверяем, существует ли ключ от столбца 2 и 3 в первом массиве, если он не существует, мы добавляем его в массив.
Наконец, мы прочитаем первый файл, проверьте существующую клавишу в массиве, и если он не существует, это линию, которую мы заинтересованы.

out.txt должен содержать строку в первом файле, который не представлен В других двух файлах:

abd 2 b f12 f14 f13
1
27.01.2020, 23:20

Теги

Похожие вопросы