Aprenda a usar variáveis ​​awk, expressões numéricas e operadores de atribuição - Parte 8

Aprenda a usar variáveis ​​awk, expressões numéricas e operadores de atribuição - Parte 8

A série de comando AWK está ficando emocionante, acredito, nas sete partes anteriores, passamos por alguns fundamentos de Awk que você precisa dominar para permitir que você execute algum texto básico ou filtragem de strings no Linux.

Começando com esta parte, mergulharemos em áreas avançadas de Awk Para lidar com operações mais complexas de texto ou filtragem de cordas. Portanto, vamos cobrir Awk Recursos como variáveis, expressões numéricas e operadores de atribuição.

Aprenda variáveis ​​awk, expressões numéricas e operadores de tarefas

Esses conceitos não são de forma abrangente daqueles que você provavelmente pode ter encontrado em muitas linguagens de programação antes de tais shell, c, python, além de muitos outros, então não há necessidade de se preocupar muito com esse tópico, estamos simplesmente revisando as idéias comuns de usar esses recursos mencionados.

Este provavelmente será um dos mais fáceis Awk Seções de comando para entender, então sente -se e vamos começar.

1. Variáveis ​​awk

Em qualquer linguagem de programação, uma variável é um suporte de local que armazena um valor, quando você cria uma variável em um arquivo de programa, à medida que o arquivo é executado, algum espaço é criado na memória que armazenará o valor que você especificará para a variável.

Você pode definir Awk Variáveis ​​da mesma maneira que você define variáveis ​​de shell da seguinte forma:

variable_name = value 

Na sintaxe acima:

  1. nome variável: é o nome que você dá uma variável
  2. valor: o valor armazenado na variável

Vejamos alguns exemplos abaixo:

computador_name = ”Tecmint.com ”port_no =” 22 ”email =” [email protegido] ”servidor =” Computer_name ” 

Dê uma olhada nos exemplos simples acima, na primeira definição de variável, o valor Tecmint.com é atribuído à variável nome do computador.

Além disso, o valor 22 é atribuído à variável PORT_NO, Também é possível atribuir o valor de uma variável a outra variável como no último exemplo em que atribuímos o valor de nome do computador para o servidor variável.

Se você consegue se lembrar, desde a Parte 2 desta série AWK, onde abordamos a edição de campo, conversamos sobre como o AWK divide as linhas de entrada em campos e usa o operador de acesso de campo padrão, $ para ler os diferentes campos que foram analisados. Também podemos usar variáveis ​​para armazenar os valores dos campos da seguinte maneira.

primeiro_name = $ 2 second_name = $ 3 

Nos exemplos acima, o valor de primeiro nome está definido para o segundo campo e segundo nome está definido para o terceiro campo.

Como ilustração, considere um arquivo nomeado nomes.TXT que contém uma lista dos usuários de um aplicativo indicando seu primeiro e sobrenome mais gênero. Usando o comando CAT, podemos visualizar o conteúdo do arquivo da seguinte forma:

$ nomes de gatos.TXT 
Listar o conteúdo do arquivo usando o comando CAT

Então, também podemos usar as variáveis primeiro nome e segundo nome para armazenar o primeiro e o segundo nomes do primeiro usuário na lista, executando o Awk Comando abaixo:

$ awk '/aaron/primeiro_name = $ 2; Second_name = $ 3; Imprima First_Name, Second_Name;  'nomes.TXT 
Armazenar variáveis ​​usando o comando AWK

Vamos também dar uma olhada em outro caso, quando você emite o comando uname -a No seu terminal, ele imprime todas as informações do seu sistema.

O segundo campo contém seu nome de anfitrião, Portanto, podemos armazenar o nome de anfitrião em uma variável chamada nome de anfitrião e imprimi -lo usando Awk do seguinte modo:

$ uname -a $ uname -a | awk 'hostName = $ 2; Print hostName;  ' 
Armazenar saída de comando para variável usando awk

2. Expressões numéricas

Em Awk, Expressões numéricas são construídas usando os seguintes operadores numéricos:

  1. * : Operador de multiplicação
  2. + : Operador de adição
  3. / : Operador de divisão
  4. - : Operador de subtração
  5. % : Operador de módulo
  6. ^ : Operador de exponenciação

A sintaxe para expressões numéricas é:

$ operand1 operador operand2 

Na forma acima, operand1 e operand2 pode ser números ou nomes de variáveis ​​e operador está qualquer um dos operadores acima.

Abaixo estão alguns exemplos para demonstrar como criar expressões numéricas:

contador = 0 num1 = 5 num2 = 10 num3 = num2-num1 contador = contador+1 

Para entender o uso de expressões numéricas em Awk, Consideraremos o seguinte exemplo abaixo, com o arquivo domínios.TXT que contém todos os domínios de propriedade de Tecmint.

notícias.Tecmint.com Tecmint.com Linuxsay.com janelas.Tecmint.com Tecmint.com notícias.Tecmint.com Tecmint.com Linuxsay.com Tecmint.com notícias.Tecmint.com Tecmint.com Linuxsay.com janelas.Tecmint.com Tecmint.com 

Para visualizar o conteúdo do arquivo, use o comando abaixo:

$ CAT domínios.TXT 
Visualizar o conteúdo do arquivo

Se queremos contar o número de vezes o domínio Tecmint.com Aparece no arquivo, podemos escrever um script simples para fazer isso da seguinte forma:

#!/BIN/BASH para arquivo em [email protegido]; faça se [-f $ arquivo]; Em seguida, o arquivo #print out filename echo "é: $ arquivo" #print um número incrementalmente para cada linha que contém o tecmint.com Awk '/^Tecmint.com/ contador = contador+1; printf "%s \ n", contador;  '$ arquivo else #Print Error Info Incase A entrada não é um arquivo de eco "$ não é um arquivo, especifique um arquivo."> & 2 && Sair 1 fi feito #script de terminação com o código de saída 0 no caso de saída de execução bem -sucedida 0 
Script shell para contar uma string ou texto no arquivo

Depois de criar o script, salve -o e torne -o executável, quando o executarmos com o arquivo, domínios.TXT Como entrada, obtemos a seguinte saída:

$ ./roteiro.sh ~/domínios.TXT 
Script para contar string ou texto

A partir da saída do script, existem 6 linhas no arquivo domínios.TXT Que contêm Tecmint.com, para confirmar que você pode contá -los manualmente.

3. Operadores de atribuição

O último Awk Recurso que abordaremos são operadores de atribuição, existem vários operadores de tarefas em AWK e incluem o seguinte:

  1. *= : Operador de atribuição de multiplicação
  2. += : Operador de atribuição de adição
  3. /= : Operador de atribuição de divisão
  4. -= : Operador de atribuição de subtração
  5. %= : Operador de atribuição de módulo
  6. ^= : Operador de atribuição de exponenciação

A sintaxe mais simples de uma operação de atribuição em Awk é o seguinte:

$ variable_name = variable_name operador operando 

Exemplos:

contador = 0 contador = contador+1 num = 20 num = num-1 

Você pode usar os operadores de atribuição acima para reduzir as operações de atribuição em Awk, Considere os exemplos anteriores, poderíamos executar a tarefa na seguinte forma:

Variable_name Operator = operando 
contador = 0 contador+= 1 num = 20 num- = 1 

Portanto, podemos alterar o Awk comando no script do shell que acabamos de escrever acima usando += Operador de atribuição da seguinte forma:

#!/BIN/BASH para arquivo em [email protegido]; faça se [-f $ arquivo]; Em seguida, o arquivo #print out filename echo "é: $ arquivo" #print um número incrementalmente para cada linha que contém o tecmint.com Awk '/^Tecmint.com/ contador+= 1; printf "%s \ n", contador;  '$ arquivo else #Print Error Info Incase A entrada não é um arquivo de eco "$ não é um arquivo, especifique um arquivo."> & 2 && Sair 1 fi feito #script de terminação com o código de saída 0 no caso de saída de execução bem -sucedida 0 
Alterar script de shell

Neste segmento da série AWK, cobrimos alguns poderosos Awk Recursos, que são variáveis, construindo expressões numéricas e usando operadores de atribuição, além de algumas ilustrações de como podemos realmente usá -las.

Esses conceitos não são diferentes dos de outras linguagens de programação, mas pode haver algumas distinções significativas sob programação AWK.

Em Parte 9, Vamos olhar para mais Awk Recursos que são padrões especiais: COMEÇAR e FIM. Até então, fique conectado a Tecmint.