Pesquisa de site

Como pular a primeira linha de um arquivo usando `awk`


Existem vários usos do comando `awk` no Linux. Por exemplo, pode ser usado para imprimir o conteúdo de um arquivo de texto. A primeira linha de muitos arquivos de texto contém o título do arquivo e, às vezes, a primeira linha deve ser ignorada ao imprimir o conteúdo do arquivo. Neste tutorial, mostraremos como realizar esta tarefa usando o comando `awk`.

Criar um arquivo de texto

Para acompanhar este tutorial, crie um arquivo de texto delimitado por tabulações chamado booklist.txt com o seguinte conteúdo. Este arquivo contém uma lista de livros com seus respectivos autores. Neste tutorial, mostraremos como imprimir diferentes partes deste arquivo após pular a primeira linha.

Cybersecurity with bash Paul Troncone, Carl Albing

Command Line Kung Fu Jason Cannon

Linux Command Line Travis Booth

Bash in easy steps Mike McGrath

Unix in easy steps Mike McGrath

Exemplo 1: Pule a primeira linha de um arquivo usando NR e o operador ‘>’

A variável NR indica o número de registros em um arquivo. O seguinte comando `awk` usa a variável NR para pular a primeira linha de um arquivo. O valor de NR é 1 para a primeira linha. O comando a seguir imprimirá linhas para as quais o valor NR é maior que 1.

$ cat booklist.txt

$ awk '(NR>1)' booklist.txt

A saída a seguir será produzida após a execução dos comandos acima. A saída inclui todas as linhas exceto a primeira linha do arquivo.

Exemplo 2: pule a primeira linha usando NR e o operador ‘!=’

O seguinte comando `awk` é semelhante ao do exemplo anterior. No entanto, o operador de comparação ‘!=’ é usado aqui em vez de ‘>’.

$ cat booklist.txt

$ awk 'NR!=1' booklist.txt

A saída a seguir será produzida após a execução dos comandos acima. A saída mostra todas as linhas exceto a primeira linha do arquivo.

Exemplo 3: ignorar a primeira linha de um arquivo usando uma instrução condicional

O seguinte comando `awk` imprimirá as linhas do arquivo se a instrução if for verdadeira. Aqui, a instrução if será verdadeira somente quando o valor NR não for igual a 1.

$ cat booklist.txt

$ awk '{if (NR!=1) {print}}' booklist.txt

A saída a seguir será produzida após a execução dos comandos acima. A saída inclui todas as linhas, exceto a primeira linha do arquivo.

Exemplo 4: imprima os nomes dos livros do arquivo, mas pule a primeira linha

Dois comandos `awk` são usados neste exemplo para imprimir todos os nomes de livros, exceto o primeiro. O comando `awk` lerá a primeira coluna do arquivo com base no separador de campo ( ) e enviará a saída para o segundo comando `awk`. O segundo comando `awk` imprimirá a saída desejada.

$ cat booklist.txt

$ awk -F "\t" '{print $1}' booklist.txt | awk 'NR!=1 {print}'

A saída a seguir será produzida após a execução dos comandos acima. A saída mostra todos os nomes de livros, exceto o do primeiro livro.

Exemplo 5: formatar o conteúdo do arquivo após pular a primeira linha

A opção '-F', a variável NR e a função printf são usadas no seguinte comando `awk` para gerar uma saída formatada após pular a primeira linha. O comando dividirá o conteúdo do arquivo em colunas com base em , e printf imprimirá a primeira e a segunda colunas quando o valor NR for pelo menos 2.

$ cat booklist.txt

$ awk -F '\t' 'NR>=2 {printf "%30s %20s\n", $1, $2}' booklist.txt

A saída a seguir será produzida após a execução dos comandos acima. A saída mostra o conteúdo formatado do arquivo, excluindo a primeira linha do arquivo.

Exemplo 6: Imprima os nomes dos livros após pular a primeira linha usando NR e NF

O seguinte comando `awk` usa a opção '-F' e NR e NF para imprimir os nomes dos livros após pular o primeiro livro. A opção ‘-F’ é usada para separar o conteúdo do arquivo base em . NR é usado para pular a primeira linha e NF é usado para imprimir apenas a primeira coluna.

$ cat booklist.txt

$ awk -F '\t' 'NR>1 && NF=1' booklist.txt

A saída a seguir será produzida após a execução dos comandos acima. A saída inclui todos os nomes de livro no arquivo, exceto o do primeiro livro.

Exemplo 7: Imprima os nomes dos autores formatados após pular a primeira linha

O comando `awk` a seguir usa a opção '-F' e uma instrução condicional para imprimir os nomes dos autores após pular a primeira linha. Aqui, o valor NR é usado na condição if. Aqui, “Nome do autor: ” será impresso como a primeira linha em vez do conteúdo da primeira linha. Os nomes dos autores do arquivo serão impressos para os demais valores de NR.

$ cat booklist.txt

$ awk -F '\t' ' {if (NR==1) printf "\nAuthor Name:\n\n"; else  printf "%s\n", $2}' booklist.txt

A saída a seguir será produzida após a execução dos comandos acima. A saída mostra o texto “Author Name: ” com uma nova linha e todos os nomes de autores são impressos, exceto o primeiro.

Conclusão

A primeira linha de um arquivo pode ser ignorada usando vários comandos do Linux. Conforme mostrado neste tutorial, existem diferentes maneiras de pular a primeira linha de um arquivo usando o comando `awk`. Notavelmente, a variável NR do comando `awk` pode ser usada para pular a primeira linha de qualquer arquivo.

Artigos relacionados: