Eliminar lista de elementos de otro archivo en bash

Eliminar lista de elementos de otro archivo en bash

¿Cuál sería el método más eficiente (sin ejecución repetida de comandos) para eliminar los elementos enumerados en un archivo de otro archivo (desordenados)?

Se puede obtener fácilmente la lista de elementos que no coinciden en el segundo archivo

cat first_file.txt second_file.txt | sort | uniq -u

pero eso también contendría todos los elementos no coincidentes del primer archivo... ¿y ahora qué?

Respuesta1

Este awkprograma realiza una sola pasada por cada archivo:

awk '
    NR == FNR {f1[$0] = 1; next}
    !($0 in f1)
' file1 file2

comm es útil para este trabajo. Requiere que sus archivos de entrada estén ordenados:

# output lines unique to file2
comm -13 <(sort file1) <(sort file2)

información relacionada