O comando 'awk' do Linux é um utilitário poderoso para diferentes operações em arquivos de texto, como pesquisa, substituição e impressão. É fácil de usar com dados tabulares porque divide automaticamente cada linha em campos ou colunas com base no separador de campo. Quando você trabalha com um arquivo de texto que contém dados tabulares e deseja imprimir os dados de uma coluna específica, o comando 'awk' é a melhor opção. Neste tutorial, mostraremos como imprimir a primeira coluna e/ou a última coluna de uma linha ou arquivo de texto.
Imprima a primeira coluna e/ou a última coluna de uma saída de comando
Muitos comandos Linux, como o comando 'LS', geram saídas tabulares. Aqui, mostraremos como imprimir a primeira coluna e/ou a última coluna da saída do comando 'ls -l'.
Exemplo 1: Imprima a primeira coluna de uma saída de comando
O seguinte comando 'awk' imprimirá a primeira coluna da saída do comando 'ls -l'.
$ ls -l
$ ls -l | awk 'print $ 1'
A saída a seguir será produzida após a execução dos comandos acima.
Exemplo 2: Imprima a última coluna de uma saída de comando
O seguinte comando 'awk' imprimirá a última coluna da saída do comando 'ls -l'.
$ ls -l
$ ls -l | awk 'print $ nf'
A saída a seguir será produzida após a execução dos comandos acima.
Exemplo 3: Imprima as primeiras e as últimas colunas de uma saída de comando
O seguinte comando 'awk' imprimirá as primeiras e as últimas colunas da saída do comando 'ls -l'.
$ ls -l
$ ls -l | awk 'print $ 1, $ nf'
A saída a seguir será produzida após a execução dos comandos acima.
Imprima a primeira coluna e/ou a última coluna de um arquivo de texto
Aqui, mostraremos como usar o comando 'awk' para imprimir a primeira coluna e/ou a última coluna de um arquivo de texto.
Crie um arquivo de texto
Para acompanhar este tutorial, crie um arquivo de texto chamado clientes.TXT com o seguinte conteúdo. O arquivo contém três tipos de dados do cliente: nome com ID, email e número de telefone. O caractere da guia (\ t) é usado para separar esses valores.
Nome do telefone e -mailExemplo 4: Imprima a primeira coluna de um arquivo sem usar um separador de campo
Se nenhum separador de campo for usado no comando 'awk', um espaço será usado como o separador de campo padrão. O seguinte comando 'awk' imprimirá a primeira coluna usando o separador padrão.
$ CAT CLIENTES.TXT
$ awk 'print $ 1' clientes.TXT
A saída a seguir será produzida após a execução dos comandos acima. Observe que a saída mostra apenas o primeiro nome do cliente porque o espaço é aplicado como separador de campo. A solução para esse problema é mostrada no próximo exemplo.
Exemplo 5: Imprima a primeira coluna de um arquivo com um delimitador
Aqui, \ t é usado como um separador de campo para imprimir a primeira coluna do arquivo. A opção '-f' é usada para definir o separador de campo.
$ CAT CLIENTES.TXT
$ awk -f '\ t' 'print $ 1' clientes.TXT
A saída a seguir será produzida após a execução dos comandos acima. O conteúdo do arquivo é dividido em três colunas com base em \ t. Portanto, o nome e o ID do cliente são impressos como a primeira coluna. Se você deseja imprimir o nome do cliente sem o ID, continue para o próximo exemplo.
Se você deseja imprimir o nome do cliente sem o ID, então você deve usar '-' como um separador de campo. O seguinte comando 'awk' imprimirá o nome do cliente apenas como a primeira coluna.
$ CAT CLIENTES.TXT
$ awk -f ' -' 'Print $ 1' clientes.TXT
A saída a seguir será produzida após a execução dos comandos acima. A saída inclui os nomes completos dos clientes sem seus IDs.
Exemplo 6: Imprima a última coluna de um arquivo
O seguinte comando 'awk' imprimirá a última coluna de clientes.TXT. Como nenhum separador de campo é usado no comando, o espaço será usado como um separador de campo.
$ CAT CLIENTES.TXT
$ awk 'print $ nf' clientes.TXT
A saída a seguir será produzida após a execução dos comandos acima. A última coluna contém números de telefone, conforme mostrado na saída.
Exemplo 7: Imprima as primeiras e as últimas colunas de um arquivo
O seguinte comando 'awk' imprimirá a primeira e a última colunas de clientes.TXT. Aqui, a guia (\ t) é usada como separador de campo para dividir o conteúdo em colunas. Aqui, a guia (\ t) é usada como um separador para a saída.
$ CAT CLIENTES.TXT
$ awk -f "\ t" 'print $ 1 "\ t" $ nf' clientes.TXT
A saída a seguir aparecerá após a execução dos comandos acima. O conteúdo é dividido em três colunas por \ t; A primeira coluna contém o nome e o ID do cliente e a segunda coluna contém o número de telefone. As primeiras e as últimas colunas são impressas usando \ t como um separador.
Conclusão
O comando 'awk' pode ser aplicado de maneiras diferentes para obter a primeira coluna e/ou a última coluna de qualquer saída de comando ou de dados tabulares. É importante observar que um separador de campo é necessário no comando e, se não for fornecido, o espaço será usado.