example ejemplo comando awk gawk

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