ejemplo - awk-f unix
awk-concatenar dos variables de cadena y asignar a un tercero (3)
La concatenación de cadenas en awk se puede lograr mediante el comando de impresión AWK manual , y puede hacer una combinación complicada. Aquí estaba tratando de cambiar el carácter 16 a A y usé la concatenación de cadenas:
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 del shell, puede escribir -vw = $ width -v BA = $ my_charval. La clave es el OFS que significa Output Field Separate en awk. La función de impresión toma una lista de valores y los escribe en STDOUT y los pega con el OFS. Esto es análogo a la función de unión perl.
Parece que en awk, la cadena se puede concatenar mediante la impresión de una variable al lado de la otra:
echo xxx | awk -v a="aaa" -v b="bbb" ''{ print a b $1 "string literal"}''
# will produce: aaabbbxxxstring literal
En awk, tengo 2 campos: $ 1 y $ 2.
Ambos son cadenas que quiero concatenar y asignar a una variable.
Podría usar sprintf
para lograr esto:
awk ''{str = sprintf("%s %s", $1, $2)} END {print str}'' file
Puedes decir:
awk ''{b=$1$2; print b}'' file
Si quieres tener un espacio intermedio, hazlo:
awk ''{b=$1" "$2; print b}'' file
Lo que de hecho es lo mismo para usar FS
, porque se predetermina al espacio:
awk ''{b=$1 FS $2; print b}'' file
Prueba
$ cat a
hello how are you
i am fine
$ awk ''{b=$1$2; print b}'' a
hellohow
iam
$ awk ''{b=$1 FS $2; print b}'' a
hello how
i am
Puedes jugar con él en ideone: http://ideone.com/4u2Aip