정렬하지 않고 두 파일 사이의 다른 줄 찾기

정렬하지 않고 두 파일 사이의 다른 줄 찾기

두 개의 파일이 있습니다. 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

관련 정보