Como permitir que o AWK use variáveis ​​de shell - Parte 11

Como permitir que o AWK use variáveis ​​de shell - Parte 11

Quando escrevemos scripts de shell, normalmente incluímos outros programas ou comandos menores, como Awk operações em nossos scripts. No caso da AWK, temos que encontrar maneiras de passar alguns valores da concha para operações awk.

Isso pode ser feito usando variáveis ​​de shell nos comandos AWK e, nesta parte da série, aprenderemos a permitir que o AWK use variáveis ​​de shell que possam conter valores que queremos passar para comandos AWK.

Possivelmente, duas maneiras de permitir que o AWK use variáveis ​​de shell:

1. Usando citação de shell

Vamos dar uma olhada em um exemplo para ilustrar como você pode realmente usar o shell citando para substituir o valor de uma variável de shell em um comando AWK. Neste exemplo, queremos procurar um nome de usuário no arquivo /etc/passwd, filtrar e imprimir as informações da conta do usuário.

Portanto, podemos escrever um teste.sh script com o seguinte conteúdo:

#!/bin/bash #read User input Read -p "Por favor, digite o nome de usuário:" Nome de usuário #search for UserName in/etc/passwd e imprima detalhes na tela CAT/etc/passwd | Awk "/ $ nome de usuário/" 'print $ 0' 

Depois disso, salve o arquivo e saia.

Interpretação do comando AWK no teste.sh script acima:

gato /etc /passwd | Awk "/ $ nome de usuário/" 'print $ 0' 

"/ $ nome de usuário/" - Citação de conchas usadas para substituir o valor da variável de shell nome de usuário no comando AWK. O valor de nome de usuário é o padrão a ser pesquisado no arquivo /etc/passwd.

Observe que a cotação dupla está fora do script AWK, 'print $ 0'.

Em seguida, faça o script executável e execute o seguinte:

$ chmod +x teste.sh $ ./texto.sh 

Depois de executar o script, você será solicitado a entrar em um nome de usuário, Digite A válido nome de usuário e acertar Digitar. Você verá os detalhes da conta do usuário do /etc/passwd arquivo como abaixo:

Script shell para encontrar o nome de usuário no arquivo de senha

2. Usando a atribuição variável da AWK

Este método é muito mais simples e melhor em comparação com o método um acima. Considerando o exemplo acima, podemos executar um comando simples para realizar o trabalho. Sob este método, usamos o -v opção para atribuir uma variável de shell a uma variável AWK.

Em primeiro lugar, crie uma variável de shell, nome de usuário e atribuir o nome que queremos pesquisar no /etc/passwd arquivo:

nome de usuário = "Aaronkilik" 

Em seguida, digite o comando abaixo e pressione Enter:

# gato /etc /passwd | awk -v name = "$ nome de usuário" '$ 0 ~ nome print $ 0' 
Encontre o nome de usuário no arquivo de senha usando AWK

Explicação do comando acima:

  1. -v - Opção awk para declarar uma variável
  2. nome de usuário - é a variável da concha
  3. nome - é a variável awk

Vamos dar uma olhada cuidadosa $ 0 ~ nome Dentro do script Awk, '$ 0 ~ nome print $ 0'. Lembre -se, quando cobrimos os operadores de comparação AWK na parte 4 desta série, um dos operadores de comparação foi valor ~ padrão, o que significa: verdadeiro se o valor corresponde ao padrão.

O saída ($ 0) do comando gato canalizado para a AWK corresponde ao padrão (Aaronkilik) qual é o nome que estamos procurando em /etc/passwd, Como resultado, a operação de comparação é verdadeira. A linha que contém as informações da conta do usuário é impressa na tela.

Conclusão

Cobrimos uma seção importante de recursos AWK, que pode nos ajudar a usar variáveis ​​de shell nos comandos AWK. Muitas vezes, você escreverá pequenos programas ou comandos AWK nos scripts de shell e, portanto, você precisa ter um entendimento claro de como usar variáveis ​​de shell nos comandos AWK.

Na próxima parte da série AWK, mergulharemos em mais uma seção crítica de recursos AWK, que é declarações de controle de fluxo. Então fique em sintonia e vamos continuar aprendendo e compartilhando.