AWK - Funções de String

AWK tem as seguintes funções de String integradas -

asort (arr [, d [, como]])

Esta função classifica o conteúdo de arr usando as regras normais do GAWK para comparar valores e substitui os índices dos valores classificados arr com inteiros sequenciais começando com 1.

Exemplo

[jerry]$ awk 'BEGIN {
   arr[0] = "Three"
   arr[1] = "One"
   arr[2] = "Two"
   print "Array elements before sorting:"
   
   for (i in arr) {
      print arr[i]
   }
   asort(arr)
   print "Array elements after sorting:"
   
   for (i in arr) {
      print arr[i]
   }
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Array elements before sorting:
Three
One
Two
Array elements after sorting:
One
Three
Two

asorti (arr [, d [, como]])

O comportamento desta função é o mesmo de asort(), exceto que os índices da matriz são usados ​​para classificação.

Exemplo

[jerry]$ awk 'BEGIN {
   arr["Two"] = 1
   arr["One"] = 2
   arr["Three"] = 3
   asorti(arr)
   print "Array indices after sorting:"
   
   for (i in arr) {
      print arr[i]
   }
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Array indices after sorting:
One
Three
Two

gsub (regex, sub, string)

gsubsignifica substituição global. Ele substitui todas as ocorrências de regex pela string (sub) fornecida. O terceiro parâmetro é opcional. Se for omitido, $ 0 será usado.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "Hello, World"
   print "String before replacement = " str
   
   gsub("World", "Jerry", str)
   print "String after replacement = " str
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

String before replacement = Hello, World
String after replacement = Hello, Jerry

índice (str, sub)

Ele verifica se sub é uma substring de strou não. Em caso de sucesso, ele retorna a posição onde sub começa; caso contrário, retorna 0. O primeiro caractere destr está na posição 1.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "One Two Three"
   subs = "Two"
   ret = index(str, subs)
   
   printf "Substring \"%s\" found at %d location.\n", subs, ret
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Substring "Two" found at 5 location.

comprimento (str)

Ele retorna o comprimento de uma string.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "Hello, World !!!"
   print "Length = ", length(str)
}'

Ao executar este código, você obtém o seguinte resultado -

Length = 16

correspondência (str, regex)

Ele retorna o índice da primeira correspondência mais longa de regex na corda str. Ele retorna 0 se nenhuma correspondência encontrada.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "One Two Three"
   subs = "Two"
   ret = match(str, subs)
  
   printf "Substring \"%s\" found at %d location.\n", subs, ret
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Substring "Two" found at 5 location

divisão (str, arr, regex)

Esta função divide a string str em campos por expressão regular regex e os campos são carregados no array arr. E seregex é omitido, então FS é usado.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "One,Two,Three,Four"
   split(str, arr, ",")
   print "Array contains following values"
   
   for (i in arr) {
      print arr[i]
   }
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Array contains following values
One
Two
Three
Four

printf (formato, lista expr)

Esta função retorna uma string construída a partir de expr-list de acordo com o formato.

Exemplo

[jerry]$ awk 'BEGIN {
   param = 1024.0
   result = sqrt(param)
   
   printf "sqrt(%f) = %f\n", param, result
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

sqrt(1024.000000) = 32.000000

strtonum (str)

Esta função examina stre retornar seu valor numérico. Se str começar com um 0 à esquerda, ele será tratado como um número octal. Se str começar com um 0x ou 0X à esquerda, será considerado um número hexadecimal. Caso contrário, suponha que seja um número decimal.

Exemplo

[jerry]$ awk 'BEGIN {
   print "Decimal num = " strtonum("123")
   print "Octal num = " strtonum("0123")
   print "Hexadecimal num = " strtonum("0x123")
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Decimal num = 123
Octal num = 83
Hexadecimal num = 291

sub (regex, sub, string)

Esta função realiza uma única substituição. Ele substitui a primeira ocorrência do padrão regex pela string (sub) fornecida. O terceiro parâmetro é opcional. Se for omitido, $ 0 é usado.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "Hello, World"
   print "String before replacement = " str
   
   sub("World", "Jerry", str)
   print "String after replacement = " str
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

String before replacement = Hello, World
String after replacement = Hello, Jerry

substr (str, start, l)

Esta função retorna a substring da string str, começando no índice start de comprimento l. Se o comprimento for omitido, o sufixo destr começando no índice start é devolvido.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "Hello, World !!!"
   subs = substr(str, 1, 5)

   print "Substring = " subs
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Substring = Hello

tolower (str)

Esta função retorna uma cópia da string str com todos os caracteres maiúsculos convertidos em minúsculos.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "HELLO, WORLD !!!"
   print "Lowercase string = " tolower(str)
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Lowercase string = hello, world !!!

toupper (str)

Esta função retorna uma cópia da string str com todos os caracteres minúsculos convertidos em maiúsculas.

Exemplo

[jerry]$ awk 'BEGIN {
   str = "hello, world !!!"
   print "Uppercase string = " toupper(str)
}'

Ao executar este código, você obtém o seguinte resultado -

Resultado

Uppercase string = HELLO, WORLD !!!