Есть ли функция для извлечения уникальной разницы в строках из сравнения двух файлов? - PullRequest
0 голосов
/ 02 августа 2020

Хорошо, у меня есть файл, назовем его file1.txt. Он имеет 5000 строк, и у меня есть file2.txt с 2000000 строк.

Я выполнил следующую команду: comm -23 <(sort file2.txt) <(sort file1.txt) > file3.txt

Теперь у меня есть file3.txt с 1 996 000 строк. Я хотел бы извлечь 1000 уникальных строк, содержащихся в file1.txt. Как это возможно?

Я пробовал: comm -23 <(sort file1.txt) <(sort file3.txt) > file4.txt безрезультатно. file4.txt не был отфильтрован, это была копия file1.txt

Заранее спасибо.

PS: Я использую cygwin, поэтому некоторые функции могут быть ограничены. Большое спасибо

Ответы [ 3 ]

1 голос
/ 02 августа 2020

Использование awk для получения уникальных строк file1. Сначала несколько тестовых данных (комментарии не являются частью данных):

file1:

1  # unique in file1 so this is what we want
2  # common in file1 and file2

file2:

2  # common in file1 and file2
3  # unique in file2

awk:

$ awk '
NR==FNR {         # process file1
    a[$0]         # hash all records
    next
}                 # process file2 below this point
($0 in a) {       # if common entry found in hash
    delete a[$0]  # delete it from the hash
}
END {             # in the end
    for(i in a)   # loop all leftovers
        print i   # and output them
}' file1 file2    # mind the order

Вывод:

1

Вывод не будет в каком-либо значимом порядке из-за проблем с реализацией.

0 голосов
/ 02 августа 2020
grep -F -x -f file1.txt file3.txt.

Полное раскрытие: - Этот ответ был найден здесь .

0 голосов
/ 02 августа 2020

На первый взгляд проблема заключается в использовании file3 для извлечения уникальных строк из file1. Учитывая, что file3 имеет только уникальные строки file2, последний comm (file1 и file3) не удалит никаких данных из file1

Рассмотрим вместо этого:

comm -23 <(sort -t: -u file1.txt) <(sort -t: -u file2.txt)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...