Encuentra las diferentes líneas entre dos archivos sin ordenar

Encuentra las diferentes líneas entre dos archivos sin ordenar

Tengo dos archivos, el archivo1 es un subconjunto del archivo2, lo que significa que todas las líneas del archivo1 se pueden encontrar en el archivo2, pero algunas líneas del archivo2 no están en el archivo1. Ahora quiero encontrar las diferentes líneas (o líneas adicionales) entre dos archivos. Debido al contenido (contiene largas secuencias de ARN) del archivo, no es muy factible ordenar el archivo, por lo que me pregunto si puedo encontrar líneas adicionales o diferentes entre dos archivos sin ordenar.

Probé este comando, pero parece no funcionar:

    grep -vxFf barcodes1.tsv barcodes.tsv > diff.csv

A continuación se muestra una sección del archivo 1 (que tiene 6113 líneas):

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

A continuación se muestra una sección del archivo 2 (que tiene 6121 líneas):

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

No es posible ordenar estos dos archivos. Por tanto, ¿cuál será el comando para el trabajo sin ordenar?

Respuesta1

Esta línea debería funcionar, y se encarga de que el archivo de salida no esté ordenado:

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

Básicamente lo que hace es:

  • Concatena el archivo.
  • Elimina los duplicados.
  • Salidas en el archivo deseado que no se ordenará.

Respuesta2

En lugar de grep, ¿puedo sustituirlo?comunicación?Tutorialestal vezútil, pero aquí tienes una sola línea para hacer lo que quieras:

comm -3 bigfile smallfile > differences

información relacionada