Tengo dos archivos con desigual de las columnas y quiero comparar estos dos archivos y eliminar la coincidencia de la línea de archivo1

archivo 1:

nt1  ID420
nt1  ID42
nt56 ID6008
ht44 ID555
lt12 ID34
lt12 ID3434
ntt56 ID667
klll ID87693

archivo2

nt23 ID42
ht44 ID555
lt12 ID3434

Deseada de salida:

nt1 ID420
nt56 ID6008
lt12 ID34
ntt56 ID667
klll ID87693

He utilizado siguiente comando desde el post anterior pero el resultado no es exactamente coincidente y que está teniendo carácter inicial para la comparación. No tengo mucha exp en awk comandos y necesito awk sola línea de comandos o sed o similar shell script para obtener este resultado. Gracias en avance:

awk -FS=" " 'NR==FNR {b[$0]; next} {for (x in b) if($0 ~ x) next;print $0}' file2 file1 > outputfile
  • ¿por qué es «nt1 ID42» desaparecidos de la salida?
InformationsquelleAutor user3242440 | 2014-01-28

1 Comentario

  1. 7

    Este va a ser el más rápido:

    grep -vFxf file2 file1

    Con awk:

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

    Si no te importa que se ordena la salida, esto es lo que comunicaciones es para:

    comm -23 <(sort file1) <(sort file2)
    • El grep intento es bueno! Mi primer pensamiento fue el uso de diff y patch aquí, sin embargo, he fracasado hasta ahora.. Encontrado diff --supress-common-lines que se puede revertir de alguna manera, pero … sigue intentando. También comm parece interesante.. sin Embargo, su grep uno es bueno! 🙂
    • Mi primer pensamiento fue comm, pero requiere de la entrada de archivos ordenados, por lo que el resultado no sería tan OP solicitado.
    • También he tropezado con esta restricción 🙂 tal vez podría vivir con eso….
    • He tratado de grep y awk solución como se sugirió anteriormente.. Aquellos que están trabajando.

Dejar respuesta

Please enter your comment!
Please enter your name here