1.13. El lenguaje de procesado de archivos GAWK
1.13.5. Manipulación de cadenas de caracteres
El comando gawk
provee de diversas funciones para la manipulación de cadenas de caracteres. En este apartado solo se muestran las funciones muy sencillas de usar que se implementan con frecuencia en código gawk, y a continuación diferentes ejemplos prácticos con los que se puede practicar.
match()
match(cadena, regexp [,array])
index()
index(in_str1, find_str2)
sub()
/regexp/, "reemplazo", [, diana]
gsub()
/regexp/, "reemplazo", [,diana]
substr()
cadena, inicio, [,longitud]
split()
split(string, array [, fieldsep [,seps ] ])
length ()
([string])
tolower()
(string)
toupper()
(string)
sub()
busca la instancia más larga en la cadena diana de la regexp, sustituyéndola por la cadena reemplazo, mientras quegsub()
realiza reemplazos globales.
$ echo 'GGCCCACACAAACGCGACGGCGAA' | gawk 'sub(/GACGGC/, "")'
GGCCCACACAAACGCGAA
$ gawk 'BEGIN { cad = "Es una cadena de las bases nitrogenadas: cadena"; print cad; sub(/cadena/, "secuencia", cad); print cad}'
Es una cadena de las bases nitrogenadas: cadena Es una secuencia de las bases nitrogenadas: cadena
$ gawk 'BEGIN { cad = "Es una cadena de bases nitrogenadas: cadena"; print cad; gsub(/cadena/, "secuencia", cad); print cad}'
Es una cadena de bases nitrogenadas: cadena Es una secuencia de bases nitrogenadas: secuencia
-
index()
imprime el índice en el que empieza la subcadena (AAA) en la cadena principal (seq, en este caso).index()
ysubstr()
con frecuencia se usan juntos.
$ gawk 'BEGIN { seq = "GGCCCACACAAACGCGACGGCGAA"; idx = index(seq, "AAA"; print idx}'
10
$ echo 'GGCCCACACAAACGCGACGGCGAA' | gawk '{ idx = index($0, "AAA"); gene = substr($0, idx); print idx, "\n"$0, "\n " gene }' 10 GGCCCACACAAACGCGACGGCGAA AAACGCGACGGCGAA
- Y un último ejemplo con
length
(en castellano, longitud).
$ echo 'GGCCCACACAAACGCGACGGCGAA' | gawk 'END {print "El oligo", $0, "tiene", length($0), "nt de longitud."}'
El oligo GGCCCACACAAACGCGACGGCGAA tiene 24 nt de longitud.