Como usar awk para imprimir campos e colunas no arquivo

Como usar awk para imprimir campos e colunas no arquivo

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 awk

Se 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.TXT 
Crie 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:

  1. Campo um que é “Tecmint.com ” é acessado usando $ 1.
  2. Campo Dois que é "é" é acessado usando $ 2.
  3. 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.