Saber os fundamentos do comando “awk” é muito importante quando se trata de processar dados de forma eficiente, e esta postagem cobre os principais recursos do comando “awk”. Vamos verificar a sintaxe primeiro:
$ awk [opções] [arquivo]Algumas das opções comumente usadas são fornecidas na tabela abaixo:
Opção | Descrição |
-F | Para especificar um separador de arquivo |
-f | Especifique o arquivo que contém o script “awk” |
-v | Atribuir variável |
Vamos dar uma olhada em alguns exemplos sobre o uso do comando “awk” e, para demonstração, criei um arquivo de texto com o nome de testFile.TXT:
1. Como imprimir uma coluna de um arquivo com o comando awk?
O comando “awk” pode ser usado para obter uma coluna específica do arquivo de texto. Para imprimir o conteúdo do arquivo, use:
$ cat testFile.TXT
Agora, para imprimir a segunda coluna do arquivo, use:
$ awk 'print $ 2' testFile.TXT
Para imprimir mais de um campo, use o comando:
$ awk 'print $ 1, $ 2, $ 3' testFile.TXT
Se você não usar a vírgula “,” a saída ficará sem espaços:
$ awk 'print $ 1 $ 2 $ 3' testFile.TXT
2. Como usar a expressão regular com o comando awk:
Para combinar as strings ou qualquer expressão, usamos barras “//”, por exemplo, se você quiser imprimir os nomes de pessoas que estão estudando “História”, então use:
$ awk '/ History / print $ 2' testFile.TXT
O resultado mostra claramente que apenas “Sam” e “Tommy” estão estudando o curso de “História”.
3. Como usar a expressão relacional com o comando “awk”:
Para corresponder ao conteúdo de um campo específico, a expressão relacional pode ser usada. Para corresponder qualquer string ou expressão a um campo, indique o campo e use o operador de comparação “~” com o padrão, conforme apresentado no seguinte comando:
$ awk '$ 3 ~ / is / print $ 2' testFile.TXT
A saída acima exibindo todos os campos da coluna 2 em relação a todos os campos que contêm “é” na coluna 3.
E para obter a saída oposta do comando acima, use o botão “! ~ ”Operador:
$ awk '$ 3! ~ / is / print $ 2 'testFile.TXT
Para comparação, também podemos usar operadores como maior que “>” e menor que “<” and equal “=” as well:
$ awk '$ 4> 70 print $ 2' testFile.TXT
A saída imprimiu os nomes de pessoas que obtiveram notas de mais de 70.
4. Como usar o padrão de intervalo com o comando awk:
Um intervalo também pode ser usado para pesquisa; simplesmente use a vírgula “,” para separar o intervalo conforme apresentado no comando mencionado abaixo:
$ awk '/ Joel /, / Marlene / print $ 3' testFile.TXT
O resultado mostra os assuntos do intervalo de “Joel” a “Marlene” da coluna 2. Podemos usar o sinal de igual duplo “==” para definir um intervalo; veja o exemplo abaixo:
$ awk '$ 4 == 80, $ 4 == 90 print $ 0' testFile.TXT
A saída exibe os nomes das pessoas da coluna 2 para o intervalo de notas "70 a 80" da coluna 4.
5. Como combinar o padrão usando o operador lógico:
O uso de operadores lógicos como OR “||,” AND “&&” permite combinar padrões de pesquisa. Use o seguinte comando
$ awk '$ 4> 80 && $ 6> 0.4 print $ 2 'testFile.TXT
O comando acima imprime os nomes das pessoas no quarto campo mais significativo do que 80 e no sexto campo maior do que 0.4. E apenas dois registros estão cumprindo a condição.
6. As expressões especiais do comando awk:
Existem duas expressões especiais, “COMEÇAR" e "FIM”:
BEGIN: Para realizar uma ação antes que os dados sejam processados
END: Para realizar uma ação após os dados serem processados
$ awk 'BEGIN imprimir “O processamento começou”; imprimir $ 2; END imprimir “Processamento finalizado” 'testFile.TXT
7. A variável interna útil do comando awk:
O comando awk possui várias variáveis que auxiliam no processamento de dados:
Variável | Descrição |
NF | Fornece o número de campos nos dados |
NR | Dá o número do registro atual |
NOME DO ARQUIVO | Mostra o nome do arquivo que está sendo processado |
FS e OFS | Separador de campo e separador de campo de saída |
RS e ORS | Separa o registro e o separador de registro de saída |
Por exemplo:
$ awk 'END print “O nome do arquivo é” FILENAME “tem campos” NF “e” NR “registros”' testFile.TXT
Usamos "END", mas se você usar "BEGIN", a saída forneceria 0 campos e 0 registros.
8. Como alterar o separador de registro:
O separador padrão no registro geralmente é o espaço; se houver uma vírgula “,” ou ponto “.”Como separador de campo e, em seguida, use a opção“ FS ”junto com o separador.
Vamos ter outro arquivo onde os campos de dados são separados por uma vírgula “:”:
$ cat testFile2.TXT$ awk 'BEGIN FS = “:” imprimir $ 2' testFile2.TXT
Uma vez que o separador do arquivo é dois pontos, mas o comando “awk” até mesmo benéfico para arquivos como este, simplesmente use a opção “FS”.
O “-F” também pode ser usado:
$ awk -F “:” 'print $ 2' testFile2.TXT
O separador de registro padrão é “nova linha” e para definir o separador de registro como “:”, use:
$ awk 'BEGIN RS = “:” imprimir $ 1' testFile2.TXT
9. Ações Awk:
As ações awk são programas minúsculos entre colchetes “” e têm mais de uma instrução separada por ponto e vírgula “;”.
A declaração mais usada com o comando “awk” é a declaração “imprimir”. Por exemplo, para imprimir um texto com cada registro, use string de texto entre aspas:
$ awk '“O é um campo,” $ 2' testfile.TXT
Vamos realizar uma operação de soma simples usando awk:
$ awk 'sum + = $ 4 END printf “% d \ n”, soma' testFile.TXT
10. Criando um programa awk:
Vamos começar com a programação “awk”, a programação fornecida abaixo é simplesmente fazer multiplicação:
COMEÇARi = 2
while (j<4)
imprima “A multiplicação de 2 com” j “é” i * j;
j++
Salve o programa com o nome de “myCode.awk”E para executá-lo, abra o terminal e digite:
$ awk -f myCode.awkConclusão:
O comando “awk” é um comando útil para processar, digitalizar dados de arquivos de texto, como separar qualquer campo específico de um arquivo; usamos o comando “awk”. Torna mais fácil pesquisar qualquer coisa em qualquer forma ou padrão nos arquivos de texto. Neste guia, entendemos os fundamentos do comando “awk” e seu uso. O comando “awk” valida dados, gera relatórios e até mesmo analisa arquivos. Usar comandos simples “awk” também permite que os usuários escrevam pequenos programas para processar dados de forma mais eficiente.