Comando nl: Numerando Linhas
O Que Você Vai Aprender
- Como adicionar números de linha com o comando
nl - A diferença principal entre
nlecat -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 -ntambé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.
nl imprime o texto com números de linha para você. nl significa "number lines."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,
nlnão numera linhas em branco, enquantocat -nnumera toda linha.
cat -n também adiciona números de linha, certo? Qual é a diferença?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) |
nl numera as linhas "significativas."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 apara numerar toda linha, incluindo as em branco.-bdefine 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)
-b t, linhas em branco são puladas a menos que eu diga o contrário.-b a.4. Formatando os Números: -w / -s
Conclusão: Use
-wpara a largura da coluna de números e-spara 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
-s '. ' eu consigo "1. apple," como uma lista numerada.-w e -s para construir uma lista limpa e legível.5. Valor Inicial e Incremento: -v / -i
Conclusão:
-vdefine o número inicial e-idefine 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:
-ndefine o formato do número:rzpara preenchimento com zeros,lnpara 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,
nllê 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
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
nlna prática.
printf 'a\n\nb\n\nc\n' > sample.txtTarefa 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