Awk

Como dividir um arquivo de strings com o Awk

Como dividir um arquivo de strings com o Awk
O comando Linux awk (abreviado dos nomes dos desenvolvedores; Aho, Weinberger e Kernighan) é uma ótima maneira de processar e analisar um arquivo de strings. Para que os arquivos sejam mais informativos, eles devem ser organizados na forma de linhas e colunas. Em seguida, você pode usar o awk nesses arquivos para:

Neste artigo, explicaremos o uso básico do comando awk e como ele pode ser usado para dividir um arquivo de strings. Executamos os exemplos deste artigo em um sistema Debian 10 Buster, mas eles podem ser facilmente replicados na maioria das distros Linux.

O arquivo de amostra que usaremos

O arquivo de amostra de strings que usaremos para demonstrar o uso do comando awk é o seguinte:

Isso é o que cada coluna do arquivo de amostra indica:

Exemplo 1: Use Awk para imprimir todas as linhas de um arquivo

Imprimir cada linha de um arquivo especificado é o comportamento padrão do comando awk. Na seguinte sintaxe do comando awk, não estamos especificando nenhum padrão que o awk deva imprimir, portanto, o comando deve aplicar a ação “imprimir” a todas as linhas do arquivo.

Sintaxe:

$ awk 'print' nome do arquivo.TXT

Exemplo:

Neste exemplo, estou dizendo ao comando awk para imprimir o conteúdo do meu arquivo de amostra, linha por linha.

$ awk 'print' arquivo_de_mostra.TXT

Exemplo 2: Use awk para imprimir apenas as linhas que correspondem a um determinado padrão

Com o awk, você pode especificar um padrão e o comando irá imprimir apenas as linhas que correspondem a esse padrão.

Sintaxe:

$ awk '/ pattern_to_be_matched / print' nome do arquivo.TXT

Exemplo:

A partir do arquivo de amostra, se eu quiser imprimir apenas as linhas que contêm a variável 'B', posso usar o seguinte comando:

$ awk '/ B / print' arquivo_de_mostra.TXT

Para tornar o exemplo mais significativo, deixe-me imprimir apenas as informações sobre os funcionários que são do professor.

$ awk '/ professor / print' arquivo_de_mostra.TXT

O comando imprime apenas as linhas / entradas que contêm a string “professor”, portanto, temos informações mais valiosas derivadas dos dados.

Exemplo 3. Use awk para dividir o arquivo de forma que apenas campos / colunas específicos sejam impressos

Em vez de imprimir o arquivo inteiro, você pode fazer um awk para imprimir apenas colunas específicas do arquivo. Awk trata todas as palavras, separadas por espaço em branco, em uma linha como um registro de coluna por padrão. Ele armazena o registro em uma variável $ N. Onde $ 1 representa a primeira palavra, $ 2 armazena a segunda palavra, $ 3 a quarta e assim por diante. $ 0 armazena toda a linha para que a linha who seja impressa, conforme explicado no exemplo 1.

Sintaxe:

$ awk 'print $ N,… .' nome do arquivo.TXT

Exemplo:

O comando a seguir imprimirá apenas a primeira coluna (nome) e a segunda coluna (assunto) do meu arquivo de amostra:

$ awk 'print $ 1, $ 2' arquivo_de_mostra.TXT

Exemplo 4: Use Awk para contar e imprimir o número de linhas em que um padrão é correspondido

Você pode dizer ao awk para contar o número de linhas em que um padrão especificado é correspondido e então produzir essa 'contagem'.

Sintaxe:

$ awk '/ pattern_to_be_matched / ++ cnt END print "Count =", cnt'
nome do arquivo.TXT

Exemplo:

Neste exemplo, quero contar o número de pessoas que ensinam o assunto “inglês”. Portanto, direi ao comando awk para corresponder ao padrão “inglês” e imprimir o número de linhas em que este padrão é correspondido.

$ awk '/ english / ++ cnt END print "Count =", cnt' sample_file.TXT

A contagem aqui sugere que 2 pessoas estão ensinando inglês a partir dos registros do arquivo de amostra.

Exemplo 5: use awk para imprimir apenas linhas com mais de um número específico de caracteres

Para esta tarefa, usaremos a função awk integrada chamada “comprimento”. Esta função retorna o comprimento da string de entrada. Assim, se quisermos que o awk imprima apenas linhas com mais ou até menos do que o número de caracteres, podemos usar a função de comprimento da seguinte maneira:

Para imprimir linhas com caracteres maiores que um número:

$ awk 'comprimento ($ 0)> n' nome do arquivo.TXT

Para imprimir linhas com caracteres menores que um número:

comprimento $ awk '($ 0) < n' filename.txt

Onde n é o número de caracteres que você deseja especificar para uma linha.

Exemplo:

O comando a seguir imprimirá apenas as linhas do meu arquivo de amostra que tenham mais de 30 caracteres:

$ awk 'length ($ 0)> 30' sample_file.TXT

Exemplo 6: use o awk para salvar a saída do comando em outro arquivo

Usando o operador de redirecionamento '>', você pode usar o comando awk para imprimir sua saída em outro arquivo. Esta é a maneira como você pode usá-lo:

$ awk 'critérios_para_imprimir "nome do arquivo.txt> outputfile.TXT

Exemplo:

Neste exemplo, estarei usando o operador de redirecionamento com meu comando awk para imprimir apenas os nomes dos funcionários (coluna 1) em um novo arquivo:

$ awk 'print $ 1' sample_file.txt> employee_names.TXT

Verifiquei através dos comandos cat que o novo arquivo contém apenas os nomes dos funcionários.

Exemplo 7: Use awk para imprimir apenas linhas não vazias de um arquivo

Awk tem alguns comandos embutidos que você pode usar para filtrar a saída. Por exemplo, o comando NF é usado para manter uma contagem dos campos dentro do registro de entrada atual. Aqui, usaremos o comando NF para imprimir apenas as linhas não vazias do arquivo:

$ awk 'NF> 0' sample_file.TXT

Obviamente, você pode usar o seguinte comando para imprimir as linhas vazias:

$ awk 'NF < 0' sample_file.txt

Exemplo 8: Use awk para contar o total de linhas em um arquivo

Outra função integrada chamada NR mantém uma contagem do número de registros de entrada (geralmente linhas) de um determinado arquivo. Você pode usar esta função no awk como segue para contar o número de linhas em um arquivo:

$ awk 'END print NR' arquivo de amostra.TXT

Esta era a informação básica necessária para começar a dividir os arquivos com o comando awk. Você pode usar a combinação desses exemplos para buscar informações mais significativas de seu arquivo de strings por meio do awk.

Melhores jogos para jogar com rastreamento manual
Oculus Quest introduziu recentemente a grande ideia de rastreamento manual sem controladores. Com um número cada vez maior de jogos e atividades que e...
Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...
Top 5 cartas de captura de jogos
Todos nós vimos e amamos streaming de jogos no YouTube. PewDiePie, Jakesepticye e Markiplier são apenas alguns dos melhores jogadores que ganharam mil...