Aprenda como usar variáveis integradas do Awk - Parte 10
À medida que descobrimos a seção de recursos do Awk, nesta parte da série, examinaremos o conceito de variáveis integradas no Awk. Existem dois tipos de variáveis que você pode usar no Awk, são elas; Variáveis definidas pelo usuário, que abordamos na Parte 8 e variáveis integradas.
Variáveis integradas têm valores já definidos no Awk, mas também podemos alterar cuidadosamente esses valores. As variáveis incorporadas incluem:
FILENAME
: nome do arquivo de entrada atual (não altere o nome da variável)FR
: número da linha de entrada atual (que é a linha de entrada 1, 2, 3… assim por diante, não altere o nome da variável)NF
: número de campos na linha de entrada atual (não altere o nome da variável)OFS
: separador de campo de saídaFS
: separador de campo de entradaORS
: separador de registro de saídaRS
: separador de registros de entrada
Vamos ilustrar o uso de algumas das variáveis integradas do Awk acima:
Para ler o nome do arquivo de entrada atual, você pode usar a variável interna FILENAME
da seguinte forma:
awk ' { print FILENAME } ' ~/domains.txt
Você perceberá que o nome do arquivo é impresso para cada linha de entrada, esse é o comportamento padrão do Awk quando você usa a variável interna FILENAME
.
Utilizando NR
para contar o número de linhas (registros) em um arquivo de entrada, lembre-se que ele também conta as linhas vazias, como veremos no exemplo abaixo.
Quando visualizamos o arquivo domains.txt usando o comando cat, ele contém 14 linhas com texto e 2 linhas vazias:
cat ~/domains.txt
awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Para contar o número de campos em um registro ou linha, usamos a variável interna NR da seguinte forma:
cat ~/names.txt
awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
A seguir, você também pode especificar um separador de campo de entrada usando a variável interna FS
, que define como o Awk divide as linhas de entrada em campos.
O valor padrão para FS
é espaço e tab, mas podemos alterar o valor de FS
para qualquer caractere que instruirá o Awk a dividir as linhas de entrada de acordo.
Existem dois métodos para fazer isso:
- um método é usar a variável integrada FS
- e a segunda é invocar a opção -F Awk
Considere o arquivo /etc/passwd em um sistema Linux, os campos neste arquivo são divididos usando o caractere :
, para que possamos especificá-lo como o novo separador de campos de entrada quando queremos filtrar determinados campos como nos exemplos a seguir:
Podemos usar a opção -F
da seguinte maneira:
awk -F':' '{ print $1, $4 ;}' /etc/passwd
Opcionalmente, também podemos aproveitar a variável integrada FS
conforme abaixo:
awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
Para especificar um separador de campos de saída, use a variável interna OFS
, ela define como os campos de saída serão separados usando o caractere que usamos como no exemplo abaixo:
awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
Nesta Parte 10, exploramos a ideia de usar variáveis integradas do Awk que vêm com valores predefinidos. Mas também podemos alterar esses valores, porém, não é recomendado fazê-lo a menos que você saiba o que está fazendo, com o entendimento adequado.
Depois disso, prosseguiremos para cobrir como podemos usar variáveis shell nas operações de comando do Awk, portanto, fique conectado ao Tecmint.