Saltar al contenido

awk – concatenar dos string variable y asignar a una tercera

No olvides que en las ciencias informáticas un problema casi siempre tiene más de una resoluciones, de igual modo te enseñamos lo más óptimo y eficiente.

Solución:

Solo usa var = var1 var2 y automáticamente concatenará las vars var1 y var2:

awk 'new_var=$1$2; print new_var' file

Puedes poner un espacio en el medio con:

awk 'new_var=$1" "$2; print new_var' file

Que de hecho es lo mismo que usar FSporque por defecto es el espacio:

awk 'new_var=$1 FS $2; print new_var' file

Prueba

$ cat file
hello how are you
i am fine
$ awk 'new_var=$1$2; print new_var' file
hellohow
iam
$ awk 'new_var=$1 FS $2; print new_var' file
hello how
i am

Puedes jugar con él en ideone: http://ideone.com/4u2Aip

Podría utilizar sprintf para lograr esto:

awk 'str = sprintf("%s %s", $1, $2) END print str' file

La concatenación de cadenas en awk se puede lograr mediante el comando de impresión de la página del manual de AWK, y puede hacer una combinación complicada. Aquí estaba tratando de cambiar los 16 caracteres a A y usé string concatenación:

echo    CTCTCTGAAATCACTGAGCAGGAGAAAGATT | awk -v w=15 -v BA=A 'OFS=""; print substr($0, 1, w), BA, substr($0,w+2)'
Output: CTCTCTGAAATCACTAAGCAGGAGAAAGATT

Usé la función substr para extraer una parte de la entrada (STDIN). Pasé algunos parámetros externos (aquí estoy usando valores codificados) que generalmente son variables de shell. En el contexto de la programación de shell, puede escribir -vw=$width -v BA=$my_charval. los key es el OFS que significa campo de salida separado en awk. La función de impresión toma una lista de valores y los escribe en STDOUT y los pega con OFS. Esto es análogo a la función de unión de Perl.

Parece que en awk, string se pueden concatenar imprimiendo variables una al lado de la otra:

echo xxx | awk -v a="aaa" -v b="bbb" ' print a b $1 "string literal"'
# will produce: aaabbbxxxstring literal

valoraciones y reseñas

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *