尋找兩個文件之間的不同行而不排序

尋找兩個文件之間的不同行而不排序

我有兩個文件,file1是file2的子集,這表示file1中的所有行都可以在file2中找到,但file2中的某些行不在file1中。現在我想找到兩個文件之間的不同行(或額外行)。由於文件的內容(包含長RNA序列),對文件進行排序不太可行,所以我想知道是否可以在不排序的情況下找到兩個文件之間的額外或不同行。

我嘗試了這個命令,但似乎不起作用:

    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

基本上,它的作用是:

  • 連接檔案。
  • 刪除重複項。
  • 輸出到所需的文件中,該文件不會被排序。

答案2

我可以代替 grep通訊教學或許有幫助的,但這裡有一個行可以做你想做的事:

comm -3 bigfile smallfile > differences

相關內容