es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Lo siento, no puedo hacerlo. Necesito el texto original para poder traducirlo al español. Por favor proporcione el texto.

Tengo dos archivos, uno solo tiene nombres y el otro tiene valores relacionados.

El primer archivo se ve así;

file1.txt
MSPC_Peak_1
MSPC_Peak_10
MSPC_Peak_10
MSPC_Peak_100
MSPC_Peak_1000
.
.
.

y el otro archivo se ve así (podemos pensar que este es una referencia)

file2.txt
MSPC_Peak_1 603,277
MSPC_Peak_3 690,776
MSPC_Peak_4 520,384
MSPC_Peak_5 4466,64  
.
MSPC_Peak_10 686,17
.

Y éstos no tienen el mismo número de líneas.

Quiero leer la línea en el archivo1 y encontrar el mismo nombre en el archivo2 y agregar el valor junto a él.

Así que, la salida debería verse así:

MSPC_Peak_1 603,277
MSPC_Peak_10 686,17
MSPC_Peak_10 686,17
. 
.

Intenté este código:

'FNR==NR{ arr[$1]; next }$1 in arr' file1 file2

Esto funcionó. Sin embargo, no imprime valores repetidos.

Dando una salida como esta:

MSPC_Peak_1 603,277
MSPC_Peak_10 686,17
. 
.

No pude encontrar la manera de solucionarlo en mi investigación ya que awk todavía es complicado para mí.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para imprimir todos los valores repetidos, puedes modificar el código existente utilizando un array para almacenar los valores de archivo2 y luego imprimirlos según corresponda. Aquí está el código modificado:

    FNR==NR{ 
        arr[$1]=$2; 
        next 
    }
    $1 in arr {
        print $1, arr[$1] 
    }
    

    En este código, estamos utilizando un array asociativo arr para almacenar los valores de archivo2 donde la clave es el valor de la primera columna y el valor es el valor de la segunda columna. Después de leer todo el archivo1, estamos leyendo cada línea del archivo2 y comprobando si el valor de la primera columna existe en el arr. Si existe, imprimimos el valor de la primera columna y el valor correspondiente de arr. Esto imprimirá todos los valores repetidos también.

    ¡Espero que esto ayude!

Comments are closed.