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.
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.
$ 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 ‘>’.
$ 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.
$ 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.
$ 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.
$ 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.
$ 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.
$ 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.