Aprenda a usar variáveis ​​embutidas AWK - Parte 10

Aprenda a usar variáveis ​​embutidas AWK - Parte 10

Enquanto descobrimos a seção de Awk Recursos, nesta parte da série, percorreremos o conceito de variáveis ​​internas em Awk. Existem dois tipos de variáveis ​​que você pode usar no AWK, são; usuário definido variáveis, que abordamos na Parte 8 e construídas em variáveis.

Exemplos de variáveis ​​incorporados

Construídas em variáveis ​​têm valores já definidos em Awk, Mas também podemos alterar cuidadosamente esses valores, as variáveis ​​internas incluem:

  1. NOME DO ARQUIVO : Nome do arquivo de entrada atual (não altere o nome da variável)
  2. Fr : Número da linha de entrada atual (que é a linha de entrada 1, 2, 3 ... assim, não altere o nome da variável)
  3. Nf : Número de campos na linha de entrada atual (não altere o nome da variável)
  4. OFS : Separador de campo de saída
  5. Fs : Separador de campo de entrada
  6. Ors : separador de registro de saída
  7. Rs : Separador de registro de entrada

Vamos prosseguir para ilustrar o uso de algumas das variáveis ​​embutidas AWK acima:

Para ler o nome do arquivo do arquivo de entrada atual, você pode usar o NOME DO ARQUIVO Variável embutida da seguinte maneira:

$ awk 'print filename' ~/domínios.TXT 
Variável de nome de arquivo AWK

Você perceberá que o nome do arquivo é impresso para cada linha de entrada, esse é o comportamento padrão de Awk Quando você usa NOME DO ARQUIVO variável interna.

Usando Nr Para contar o número de linhas (registros) em um arquivo de entrada, lembre -se de que ele também conta as linhas vazias, como veremos no exemplo abaixo.

Quando vemos o arquivo domínios.TXT Usando o comando CAT, ele contém 14 linhas com texto e vazio 2 linhas:

$ cat ~/domínios.TXT 
Imprimir conteúdo de arquivo
$ awk 'end print "O número de registros no arquivo é:", nr' ~/domínios.TXT 
Contagem de linhas AWK

Para contar o número de campos em um registro ou linha, usamos a variável NR integrada da seguinte maneira:

$ cat ~/nomes.TXT 
Listar o conteúdo do arquivo
$ awk 'print "registro:", nr, "tem", nf, "campos";  '~/nomes.TXT 
Contagem de campos AWK

Em seguida, você também pode especificar um separador de campo de entrada usando o Fs variável embutida, define como Awk divide as linhas de entrada em campos.

O valor padrão para Fs é espaço e aba, Mas podemos mudar o valor de Fs a qualquer personagem que instruirá a Awk a dividir as linhas de entrada de acordo.

Existem dois métodos para fazer isso:

  1. Um método é usar o Fs variável interna
  2. E o segundo é invocar o -F Opção awk

Considere o arquivo /etc/passwd Em um sistema Linux, os campos neste arquivo são divididos usando o : Personagem, para que possamos especificá -lo como o novo separador de campo de entrada quando queremos filtrar certos campos, como nos seguintes exemplos:

Podemos usar o -F Opção da seguinte forma:

$ awk -f ': "print $ 1, $ 4;' /etc /passwd 
Campos de filtro AWK no arquivo de senha

Opcionalmente, também podemos aproveitar o Fs Variável interna como abaixo:

$ awk 'BEGN fs = ":";  print $ 1, $ 4;  ' /etc /passwd 
Campos de filtro em arquivo usando awk

Para especificar um separador de campo de saída, use o OFS Variável interna, ele 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 
Adicionar separador ao campo no arquivo

Nisso Parte 10, Exploramos a idéia de usar variáveis ​​incorporadas awk que vêm com valores predefinidos. Mas também podemos mudar esses valores, não é recomendável fazê -lo, a menos que você saiba o que está fazendo, com entendimento adequado.

Depois disso, progrediremos para cobrir como podemos usar variáveis ​​de shell nas operações de comando AWK, portanto, permanecerem conectados a Tecmint.