Comando nl: Numerando Linhas

Comando nl: Numerando Linhas

O Que Você Vai Aprender

  • Como adicionar números de linha com o comando nl
  • A diferença principal entre nl e cat -n (como tratam linhas em branco)
  • Como alterar a largura, separador, valor inicial, incremento e formato dos números
  • Como apontar rapidamente "qual linha" em um log ou arquivo fonte

Resumo Rápido

  • Só precisa de números rápido -> nl file
  • Quer linhas em branco numeradas também -> nl -b a file
  • cat -n também numera toda linha (prático quando não precisa de opções)

1. O Que é o Comando nl?

Conclusão: nl (number lines) imprime cada linha do texto com um número de linha na frente. Por padrão, ele pula linhas em branco.

Lina: Eu quero ler um arquivo sabendo "qual linha é qual." Preciso mesmo contar com o dedo?
Veterano Linny: Não, o comando nl imprime o texto com números de linha para você. nl significa "number lines."
Lina: Queria ter sabido antes. Como eu uso?
Veterano Linny: Basta passar o nome do arquivo: nl nomedoarquivo.

Vamos experimentar com um arquivo de três linhas chamado memo.txt.

$ cat memo.txt
apple
orange
grape

Passe pelo nl e cada linha recebe um número na frente.

$ nl memo.txt
     1	apple
     2	orange
     3	grape

Básico do nl

nl nomedoarquivo coloca um número de linha alinhado à direita na frente de cada linha. O número e o texto são separados por uma tabulação.

2. Como nl Difere de cat -n?

Conclusão: A grande diferença são as linhas em branco. Por padrão, nl não numera linhas em branco, enquanto cat -n numera toda linha.

Lina: Mas cat -n também adiciona números de linha, certo? Qual é a diferença?
Veterano Linny: Boa pergunta. A diferença principal é como tratam linhas em branco. Vamos ver.

Aqui está list.txt com linhas em branco no meio.

$ cat list.txt
red

blue

green

Execute nl e as linhas em branco não recebem número.

$ nl list.txt
     1	red

     2	blue

     3	green

cat -n, por outro lado, numera toda linha, incluindo as em branco.

$ cat -n list.txt
     1	red
     2
     3	blue
     4
     5	green

Qual usar

O que você quer Comando
Numerar apenas linhas com conteúdo nl file
Numerar toda linha física, incluindo em branco cat -n file
Controle fino sobre largura e formato nl (opções ricas)
Lina: Então nl numera as linhas "significativas."
Veterano Linny: Isso. E como veremos, nl permite ajustar a largura e o separador, então é ótimo quando você quer que a saída fique limpa.

3. Numerando Linhas em Branco Também: -b a

Conclusão: Adicione -b a para numerar toda linha, incluindo as em branco. -b define o estilo de numeração do corpo.

Quando você quer linhas em branco numeradas também, use -b a. O a significa "all" (todas as linhas).

$ nl -b a list.txt
     1	red
     2
     3	blue
     4
     5	green

Estilos principais de -b

  • -b a: numerar todas as linhas (all)
  • -b t: numerar apenas linhas não vazias (padrão, t de text)
  • -b n: não numerar nenhuma linha (none)
Lina: Como o padrão é -b t, linhas em branco são puladas a menos que eu diga o contrário.
Veterano Linny: Exatamente. Quando você quer tudo numerado, use -b a.

4. Formatando os Números: -w / -s

Conclusão: Use -w para a largura da coluna de números e -s para o separador entre número e texto. Os padrões são largura 6 e tabulação.

4-1. Alterar a largura (-w)

Por padrão, a coluna de números tem seis caracteres de largura. -w define a largura.

$ nl -w 3 memo.txt
  1	apple
  2	orange
  3	grape

4-2. Alterar o separador (-s)

O número e o texto são separados por uma tabulação por padrão. -s define qualquer string que você quiser.

$ nl -s '. ' memo.txt
     1. apple
     2. orange
     3. grape
Lina: Com -s '. ' eu consigo "1. apple," como uma lista numerada.
Veterano Linny: Sim. O separador pode incluir espaços, então combine -w e -s para construir uma lista limpa e legível.

5. Valor Inicial e Incremento: -v / -i

Conclusão: -v define o número inicial e -i define o incremento. Comece em 100, ou conte de 2 em 2, conforme necessário.

5-1. Alterar o valor inicial (-v)

-v é o primeiro número. Para começar em 100:

$ nl -v 100 memo.txt
   100	apple
   101	orange
   102	grape

5-2. Alterar o incremento (-i)

-i é quanto cada linha adiciona. Para contar de 2 em 2, use -i 2.

$ nl -i 2 memo.txt
     1	apple
     3	orange
     5	grape

-v e -i combinam: nl -v 10 -i 10 memo.txt numera 10, 20, 30.

6. Preenchimento com Zeros e Alinhamento: -n

Conclusão: -n define o formato do número: rz para preenchimento com zeros, ln para alinhamento à esquerda, rn (padrão) para alinhamento à direita.

-n controla como o número é exibido.

$ nl -n rz -w 3 memo.txt
001	apple
002	orange
003	grape

Valores de formato -n

Valor Significado
rn Alinhado à direita, sem preenchimento (padrão)
rz Alinhado à direita, com zeros
ln Alinhado à esquerda

7. Usando nl em um Pipe

Conclusão: Sem nome de arquivo, nl lê a entrada padrão, então você pode redirecionar a saída de outro comando através dele para adicionar números de linha.

Omita o nome do arquivo e redirecione para nl para numerar a saída do comando anterior.

$ ls /etc | nl
     1	hostname
     2	hosts
     3	passwd
Lina: Agora posso dizer qual item é qual de relance.
Veterano Linny: Isso. Redirecionar resultados do grep para nl para contar "qual número de correspondência" também é um uso comum.

Se a entrada redirecionada contém linhas em branco, o padrão pula a numeração delas. Para contar itens exatamente, adicione -b a ou use cat -n.

8. Mini Exercícios: Tente Você Mesmo

Conclusão: Três tarefas (criar um arquivo, numerar com linhas em branco, ajustar o formato) permitem praticar o básico do nl na prática.

Lina: Quero aprender fazendo.
Veterano Linny: Ótimo, tenho três para você. Primeiro, crie um arquivo de prática.
Veterano Linny: printf 'a\n\nb\n\nc\n' > sample.txt

Tarefa 1: Imprima sample.txt com números de linha usando nl (linhas em branco podem ficar sem número).

Mostrar dica

Basta passar o nome do arquivo: nl nomedoarquivo.

Resposta exemplo
$ nl sample.txt

Tarefa 2: Imprima o mesmo sample.txt com linhas em branco numeradas também.

Mostrar dica

Defina o estilo de numeração do corpo para all com -b a.

Resposta exemplo
$ nl -b a sample.txt

Tarefa 3: Imprima sample.txt com números preenchidos com zeros de 3 dígitos (001, 002, ...).

Mostrar dica

Combine o formato -n rz com a largura -w 3.

Resposta exemplo
$ nl -n rz -w 3 sample.txt

9. Templates para Copiar e Colar

Conclusão: Mantenha os padrões comuns à mão: básico, todas as linhas, formatação e redirecionamento.

Padrões comuns para manter por perto

# Basico (numerar linhas nao vazias)
nl file.txt

# Numerar toda linha, incluindo em branco
nl -b a file.txt

# Largura 3, separador ponto
nl -w 3 -s '. ' file.txt

# Comecar em 100, incremento de 2
nl -v 100 -i 2 file.txt

# Preenchimento com zeros de 3 digitos
nl -n rz -w 3 file.txt

# Redirecionar saida de outro comando para nl
ls /etc | nl

Próximas Leituras