У меня есть два файла, file1 является подмножеством file2, что означает, что все строки в file1 можно найти в file2, но некоторые строки в file2 отсутствуют в file1. Теперь я хочу найти разные строки (или дополнительные строки) между двумя файлами. Из-за содержимого (содержит длинные последовательности РНК) файла сортировка файла не очень целесообразна, поэтому мне интересно, смогу ли я найти дополнительные или разные строки между двумя файлами без сортировки.
Я попробовал эту команду, но, похоже, она не работает:
grep -vxFf barcodes1.tsv barcodes.tsv > diff.csv
Ниже представлен фрагмент файла file1 (состоящий из 6113 строк):
AAACCTGAGAAAGTGG-1
AAACCTGAGCCACGCT-1
AAACCTGAGCCTATGT-1
AAACCTGAGCTGCAAG-1
AAACCTGCATTCGACA-1
AAACCTGCATTGGGCC-1
AAACCTGCATTTCACT-1
AAACCTGGTAACGTTC-1
AAACCTGGTATTCGTG-1
AAACCTGGTCGGCACT-1
AAACCTGTCACTATTC-1
AAACCTGTCAGGCGAA-1
AAACCTGTCCTAGTGA-1
AAACCTGTCGGATGTT-1
AAACCTGTCTGATTCT-1
AAACGGGAGTGAACAT-1
AAACGGGCACTCTGTC-1
AAACGGGGTAAGAGAG-1
AAACGGGGTACCTACA-1
AAACGGGGTTCAGACT-1
AAACGGGGTTTGACTG-1
AAACGGGTCAAAGTAG-1
AAACGGGTCAACCAAC-1
AAACGGGTCATGCATG-1
AAACGGGTCCTATTCA-1
AAACGGGTCGTATCAG-1
AAACGGGTCTATGTGG-1
AAAGATGAGCACAGGT-1
AAAGATGAGCAGGCTA-1
AAAGATGCAAACTGTC-1
Ниже представлен фрагмент файла file2 (состоящий из 6121 строки):
AAACCTGCAAGCGAGT-1
AAACCTGCACACAGAG-1
AAACCTGGTAAACACA-1
AAACCTGGTCGGATCC-1
AAACCTGGTCTCTTTA-1
AAACCTGGTTTAAGCC-1
AAACCTGTCAACACCA-1
AAACCTGTCTATCCCG-1
AAACCTGTCTTTAGGG-1
AAACGGGAGCCACCTG-1
AAACGGGAGCGTTTAC-1
AAACGGGAGCTGTTCA-1
AAACGGGAGTAGGCCA-1
AAACGGGAGTGCCATT-1
AAACGGGCAACACCTA-1
AAACGGGCAATAGCGG-1
AAACGGGCACAGATTC-1
AAACGGGCACAGTCGC-1
AAACGGGCAGATGAGC-1
AAACGGGCAGGAATCG-1
AAACGGGCAGGTCCAC-1
AAACGGGCAGGTGGAT-1
AAACGGGCATAAAGGT-1
AAACGGGGTAGCTCCG-1
AAACGGGGTAGCTGCC-1
AAACGGGGTTCAACCA-1
AAACGGGGTTTGGGCC-1
AAACGGGTCAAACAAG-1
AAACGGGTCGAACTGT-1
AAACGGGTCTTAACCT-1
Сортировать эти два файла не представляется возможным. Поэтому, какая команда будет для задания без сортировки?
решение1
Эта одна строка должна решить задачу, и она позаботится о том, чтобы выходной файл не был отсортирован:
cat -n barcodes1.tsv barcodes.tsv | sort -uk2 | sort -nk1 | cut -f2- > diff.csv
По сути, он делает следующее:
- Объединяет файлы.
- Удаляет дубликаты.
- Выводит данные в нужный файл, который не будет отсортирован.