Buscar..


Sintaxis

  • índice (grande, pequeño)
  • longitud o longitud ()
  • longitud (cuerda)
  • coincidencia (cadena, expresión regular)
  • dividir (cadena, matriz, separador)
  • dividir (cadena, matriz)
  • sprintf (formato, ...)
  • sub (regex, subst, string)
  • sub (regex, subst)
  • gsub (regex, subst)
  • gsub (regex, subst, string)
  • substr (cadena, comienzo, final)
  • substr (cadena, inicio)
  • tolower (cadena)
  • toupper (cadena)

Parámetros

Parámetro Detalles
grande La cadena que se escanea para "poco".
fin El índice en el que terminar la subcadena.
formato Una printf formato printf .
pequeño La cadena para buscar en "grande".
expresiones regulares Una expresión regular-extendida .
comienzo El índice en el que se inicia la subcadena.
cuerda Una cuerda.
substancia La cadena para sustituir en la porción coincidente.

Convertir cadena a mayúsculas

La función toupper convertirá una cadena a mayúsculas (mayúsculas). Por ejemplo:

BEGIN {
    greeting = "hello"
    loud_greeting = toupper(greeting)
    print loud_greeting
}

Este código mostrará "HOLA" cuando se ejecute.

Concatenacion de cuerdas

La concatenación de cadenas se realiza simplemente escribiendo expresiones una al lado de la otra sin ningún operador. Por ejemplo:

BEGIN {
   user = "root"
   print "Hello "user "!"
}

se imprimirá: Hello root!

Tenga en cuenta que las expresiones no tienen que estar separadas por espacios en blanco.

Calcular un hash de una cadena

Si bien la implementación de uno de los algoritmos de hash estándar en awk es probablemente una tarea tediosa, la definición de una función de hash que se puede utilizar como un identificador de documentos de texto es mucho más manejable. Una situación práctica en la que una función de este tipo es útil es asignar identificadores cortos a los elementos dada su descripción, por ejemplo, casos de prueba, para que el usuario pueda proporcionar el identificador corto como referencia al elemento en lugar de proporcionar su descripción larga.

La función hash necesita convertir los caracteres en códigos numéricos, lo que se logra mediante el uso de una tabla de búsqueda inicializada al principio del script. La función hash se calcula luego mediante transformaciones aritméticas modulares, un enfoque muy clásico para el cálculo de hashes.

Para fines de demostración, agregamos una regla para decorar las líneas de entrada con su hash, pero esta regla no es necesaria para usar la función:

BEGIN{
  for(n=0;n<256;n++) {
    ord[sprintf("%c",n)] = n
  }
}

function hash(text, _prime, _modulo, _ax, _chars, _i)
{
  _prime = 104729;
  _modulo = 1048576;
  _ax = 0;
  split(text, _chars, "");
  for (_i=1; _i <= length(text); _i++) {
    _ax = (_ax * _prime + ord[_chars[_i]]) % _modulo;
  };
  return sprintf("%05x", _ax)
}

# Rule to demonstrate the function
#  These comments and the following line are not relevant
#  to the definition of the hash function but illustrate
#  its use.

{ printf("%s|%s\n", hash($0), $0) }

Guardamos el programa anterior en el archivo hash.awk y lo demostramos en una breve lista de títulos de libros en inglés clásico:

awk -f hash.awk <<EOF
Wuthering Heights
Jane Eyre
Pride and Prejudice
The Mayor of Casterbridge
The Great Gatsby
David Copperfield
Great Expectations
The Return of the Soldier
Alice's Adventures in Wonderland
Animal Farm
EOF

La salida es

6d6b1|Wuthering Heights
7539b|Jane Eyre
d8fba|Pride and Prejudice
fae95|The Mayor of Casterbridge
17fae|The Great Gatsby
c0005|David Copperfield
7492a|Great Expectations
12871|The Return of the Soldier
c3ab6|Alice's Adventures in Wonderland
46dc0|Animal Farm

Cuando se aplica en cada una de las 6948 líneas que no están en blanco de mi novela favorita, esta función hash no genera ninguna colisión.

Convertir la cadena a minúsculas

AWK se utiliza a menudo para manipular archivos completos que contienen una lista de cadenas. Digamos que el archivo awk_test_file.txt contiene:

First String
Second String
Third String

Para convertir todas las cadenas a minúsculas ejecute:

awk '{ print tolower($0) }' awk_test_file.txt

Esto resultará:

first string
second string
third string

Sustitución de texto de cadena

La función SUB permite sustituir texto dentro de awk.

sub (regexp, reemplazo, destino)

donde regexp podría ser una expresión regular completa

$ cat file
AAAAA
BBBB
CCCC
DDDD
EEEE
FFFF
GGGG
$ awk '{sub("AAA","XXX", $0); print}' file
XXXAA
BBBB
CCCC
DDDD
EEEE
FFFF
GGGG

Extracción de subcadenas

GNU awk admite una función de extracción de subcadenas para devolver una secuencia de caracteres de longitud fija desde una cadena principal. La sintaxis es

*substr(string, start [, length ])* 

donde, la string es la string origen y el start marca el inicio de la posición de la subcadena en la que desea que se realice la extracción para los caracteres de length longitud opcional. Si no se especifica la longitud, la extracción se realiza hasta el final de la cadena.

El primer carácter de la cadena se trata como el número uno de caracteres.

awk '
BEGIN {
    testString = "MyTESTstring"
    substring  =  substr(testString, 3, 4)    # Start at character 3 for a length of 4 characters
    print substring
}'

dará salida a la subcadena TEST .

awk '
BEGIN {
    testString = "MyTESTstring"
    substring  =  substr(testString, 3)    # Start at character 3 till end of the string
    print substring
}'

esto extrae la TESTstring posición del carácter 3 al final de toda la cadena, devolviendo TESTstring

Nota:-

  • Si al start se le asigna un valor negativo, GNU awk imprime toda la cadena y si a la length se le asigna un valor distinto de cero, el comportamiento de awk de GNU devuelve una cadena null y el comportamiento varía entre las diferentes implementaciones de awk .


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow