ソートせずに2つのファイル間の異なる行を見つける

ソートせずに2つのファイル間の異なる行を見つける

2つのファイルがあります。 file1 は file2 のサブセットです。つまり、file1のすべての行はfile2にありますが、file2の一部の行はfile1にありません。それでは、2つのファイル間の異なる行(または追加の行)を探したいと思います。ファイルの内容(長いRNAシーケンスを含む)のためにファイルをソートすることは不可能であるため、ソートせずに2つのファイルの間に追加または他の行を見つけることができるかどうか疑問に思います。

このコマンドを試しましたが、うまくいかないようです。

    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

これら2つのファイルをソートすることは不可能です。それでは、ソートされていないジョブの場合、コマンドは何ですか?

ベストアンサー1

このライナーはトリックを実行する必要があり、出力ファイルがソートされていないことがわかります。

cat -n barcodes1.tsv barcodes.tsv | sort -uk2 | sort -nk1 | cut -f2- > diff.csv

デフォルトで実行される操作は次のとおりです。

  • 接続ファイル。
  • 重複したアイテムを削除してください。
  • ソートされていない所望のファイルに出力されます。

おすすめ記事