Como usar awk para imprimir campos e colunas no arquivo
- 4722
- 1303
- Enrique Crist
Nesta parte de nossa série de comando linux awk, veremos uma das características mais importantes de Awk, que é edição de campo.
É bom saber que Awk divide automaticamente as linhas de entrada fornecidas a ele em campos, e um campo pode ser definido como um conjunto de caracteres que são separados de outros campos por um separador interno de campo.
Campos de impressão e colunas awkSe você estiver familiarizado com o UNIX/Linux ou faça a programação de shell bash, deve saber qual separador de campo interno (Ifs) variável é. O IFS padrão em Awk são guias e espaço.
É assim que a idéia de separação de campo funciona em Awk: quando encontra uma linha de entrada, de acordo com o IFS definido, o primeiro conjunto de caracteres é o campo, que é acessado usando $ 1, O segundo conjunto de caracteres é o campo dois, que é acessado usando $ 2, O terceiro conjunto de caracteres é o campo três, que é acessado usando $ 3 e assim por diante até o último conjunto de personagens.
Para entender melhor essa edição de campo AWK, vamos dar uma olhada nos exemplos abaixo:
Exemplo 1: Eu criei um arquivo de texto chamado Tecmintinfo.TXT.
# VI Tecmintinfo.txt # cat tecmintinfo.TXTCrie arquivo no Linux
Depois da linha de comando, tento imprimir o primeiro, segundo e terceiro campos do arquivo Tecmintinfo.TXT Usando o comando abaixo:
$ awk '// print $ 1 $ 2 $ 3' Tecmintinfo.TXT Tecmint.Comestthe
A partir da saída acima, você pode ver que os caracteres dos três primeiros campos são impressos com base no Ifs definido qual é o espaço:
- Campo um que é “Tecmint.com ” é acessado usando
$ 1
. - Campo Dois que é "é" é acessado usando
$ 2
. - Campo três que é "o" é acessado usando
$ 3
.
Se você notou na saída impressa, os valores do campo não são separados e é assim que a impressão se comporta por padrão.
Para ver a saída claramente com o espaço entre os valores do campo, você precisa adicionar (,)
Operador da seguinte forma:
$ awk '// print $ 1, $ 2, $ 3; 'TecmintInfo.TXT Tecmint.com é o
Uma coisa importante a ser observada e sempre lembra é que o uso de ($)
em Awk é diferente do seu uso em script de shell.
Em script de shell ($)
é usado para acessar o valor das variáveis enquanto em Awk ($)
É usado apenas ao acessar o conteúdo de um campo, mas não para acessar o valor das variáveis.
Exemplo 2: Vamos dar uma olhada em um outro exemplo usando um arquivo que contém várias linhas chamadas my_shoping.lista.
NO ITEM_NAME UNIT_PRICE Quantidade Preço 1 Mouse #20.000 1 #20.000 2 Monitor #500.000 1 #500.000 3 Ram_chips #150.000 2 #300.000 4 Ethernet_Cables #30.000 4 #120.000
Diga que você queria apenas imprimir Preço unitário
De cada item na lista de compras, você precisará executar o comando abaixo:
$ awk '// print $ 2, $ 3' my_shopping.TXT Item_name Unit_price Mouse #20.000 Monitor #500.000 ram_chips #150.000 Ethernet_Cables #30.000
Awk também tem um printf
comando que ajuda você a formatar sua saída é uma boa maneira, pois você pode ver a saída acima não é clara o suficiente.
Usando printf
para formatar a saída do Nome do item e Preço unitário:
$ awk '// printf " %-10s %s \ n", $ 2, $ 3' my_shopping.TXT Item_name Unit_price Mouse #20.000 Monitor #500.000 ram_chips #150.000 Ethernet_Cables #30.000
Resumo
A edição de campo é muito importante ao usar Awk Para filtrar texto ou cordas, ajuda a obter dados específicos em colunas em uma lista. E sempre lembre -se de que o uso de ($)
operador in Awk é diferente daquele em script de concha.
Espero que o artigo tenha sido útil para você e para qualquer informação adicional necessária ou perguntas, você pode postar um comentário na seção de comentários.
- « Como usar expressões AWK e regulares para filtrar texto ou string nos arquivos
- EBook apresentando o Django Introdução ao Python Basics »