¿Cómo seleccionar entradas únicas de múltiples archivos de texto e imprimirlas en un archivo de salida?

¿Cómo seleccionar entradas únicas de múltiples archivos de texto e imprimirlas en un archivo de salida?

Tengo 3 archivos con datos similares. Quiero un script bash que pueda leer los 3 archivos y generar las entradas únicas con sus valores. Ejemplo:

1.txt
aceE    14
aceF    8
adhE    20
asnS    2
carB    2
dnaK    3
eno     2

2.txt
aceE    11
aceF    7
acnB    2
acrB    1
adhE    22
asnS    2
dapD    3

3.txt
aceE    16
aceF    10
adhE    18
aroK    2
asnS    3
dapD    4
dnaK    4

Entonces la salida debería verse así:

acnB    2
acrB    1
aroK    2
carB    2
eno     2

Respuesta1

Con GNU uniqo compatible (para la -wopción):

sort {1,2,3}.txt | uniq -u -w5
acnB    2
acrB    1
aroK    2
carB    2
eno     2

editar: para ser un poco más flexible con las longitudes del primer campo, se podría implementar parte del enfoque de Guillermo.

grep -f <(sort {1,2,3}.txt | cut -d' ' -f1 | uniq -u) <(sort {1,2,3}.txt)

Resulta que el delimitador en los archivos de entrada es <tab>y no <space>. Esto se cambió al pegar los archivos de entrada en la pregunta. :-(
Sin embargo, esto debería funcionar con <tab>.

grep -f <(sort {1,2,3}.txt | cut -f1 | uniq -u) <(sort {1,2,3}.txt)

Respuesta2

Propongo esto:

sort {1,2,3}.txt | cut -d' ' -f1 | uniq -u | xargs -I '{}' grep -h "{}" {1,2,3}.txt

Ordene el contenido de los archivos:

sort {1,2,3}.txt

Genere solo la primera columna:

cut -d' ' -f1

Filtrar únicos:

uniq -u

acnB
acrB
aroK
carB
eno

Con la alimentación de salida grep:

xargs -I '{}' grep -h "{}" {1,2,3}.txt

acnB    2
acrB    1
aroK    2
carB    2
eno     2

Respuesta3

Con awk:

awk '
  n[$1]++ {delete s[$1]; next}
  {s[$1] = $0}
  END {for (i in s) print s[i]}' [123].txt

Respuesta4

Usando Molinero (https://github.com/johnkerl/miller) y corriendo

mlr --csv --fs "\t" -N count-similar -g 1 then filter '$count==1' then cut -x -f count 1.txt  2.txt 3.txt

usted tendrá

carB    2
eno     2
acnB    2
acrB    1
aroK    2

información relacionada