Comando nl: Numerando Linhas
O Que Voce Vai Aprender
- Como adicionar numeros de linha com o comando
nl - A diferenca principal entre
nlecat -n(como tratam linhas em branco) - Como alterar a largura, separador, valor inicial, incremento e formato dos numeros
- Como apontar rapidamente "qual linha" em um log ou arquivo fonte
Resumo Rapido
- So precisa de numeros rapido ->
nl file - Quer linhas em branco numeradas tambem ->
nl -b a file cat -ntambem numera toda linha (pratico quando nao precisa de opcoes)
1. O Que e o Comando nl?
Conclusao:
nl(number lines) imprime cada linha do texto com um numero de linha na frente. Por padrao, ele pula linhas em branco.
nl imprime o texto com numeros de linha para voce. nl significa "number lines."nl nomedoarquivo.Vamos experimentar com um arquivo de tres linhas chamado memo.txt.
$ cat memo.txt
apple orange grape
Passe pelo nl e cada linha recebe um numero na frente.
$ nl memo.txt
1 apple
2 orange
3 grape
Basico do nl
nl nomedoarquivo coloca um numero de linha alinhado a direita na frente de cada linha. O numero e o texto sao separados por uma tabulacao.
2. Como nl Difere de cat -n?
Conclusao: A grande diferenca sao as linhas em branco. Por padrao,
nlnao numera linhas em branco, enquantocat -nnumera toda linha.
cat -n tambem adiciona numeros de linha, certo? Qual e a diferenca?Aqui esta list.txt com linhas em branco no meio.
$ cat list.txt
red blue green
Execute nl e as linhas em branco nao recebem numero.
$ 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 voce quer | Comando |
|---|---|
| Numerar apenas linhas com conteudo | nl file |
| Numerar toda linha fisica, incluindo em branco | cat -n file |
| Controle fino sobre largura e formato | nl (opcoes ricas) |
nl numera as linhas "significativas."nl permite ajustar a largura e o separador, entao e otimo quando voce quer que a saida fique limpa.3. Numerando Linhas em Branco Tambem: -b a
Conclusao: Adicione
-b apara numerar toda linha, incluindo as em branco.-bdefine o estilo de numeracao do corpo.
Quando voce quer linhas em branco numeradas tambem, 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 nao vazias (padrao, t de text)-b n: nao numerar nenhuma linha (none)
-b t, linhas em branco sao puladas a menos que eu diga o contrario.-b a.4. Formatando os Numeros: -w / -s
Conclusao: Use
-wpara a largura da coluna de numeros e-spara o separador entre numero e texto. Os padroes sao largura 6 e tabulacao.
4-1. Alterar a largura (-w)
Por padrao, a coluna de numeros 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 numero e o texto sao separados por uma tabulacao por padrao. -s define qualquer string que voce 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 legivel.5. Valor Inicial e Incremento: -v / -i
Conclusao:
-vdefine o numero inicial e-idefine o incremento. Comece em 100, ou conte de 2 em 2, conforme necessario.
5-1. Alterar o valor inicial (-v)
-v e o primeiro numero. Para comecar em 100:
$ nl -v 100 memo.txt
100 apple 101 orange 102 grape
5-2. Alterar o incremento (-i)
-i e 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
Conclusao:
-ndefine o formato do numero:rzpara preenchimento com zeros,lnpara alinhamento a esquerda,rn(padrao) para alinhamento a direita.
-n controla como o numero e exibido.
$ nl -n rz -w 3 memo.txt
001 apple 002 orange 003 grape
Valores de formato -n
| Valor | Significado |
|---|---|
rn |
Alinhado a direita, sem preenchimento (padrao) |
rz |
Alinhado a direita, com zeros |
ln |
Alinhado a esquerda |
7. Usando nl em um Pipe
Conclusao: Sem nome de arquivo,
nlle a entrada padrao, entao voce pode redirecionar a saida de outro comando atraves dele para adicionar numeros de linha.
Omita o nome do arquivo e redirecione para nl para numerar a saida do comando anterior.
$ ls /etc | nl
1 hostname
2 hosts
3 passwd
grep para nl para contar "qual numero de correspondencia" tambem e um uso comum.Se a entrada redirecionada contem linhas em branco, o padrao pula a numeracao delas. Para contar itens exatamente, adicione -b a ou use cat -n.
8. Mini Exercicios: Tente Voce Mesmo
Conclusao: Tres tarefas (criar um arquivo, numerar com linhas em branco, ajustar o formato) permitem praticar o basico do
nlna pratica.
printf 'a\n\nb\n\nc\n' > sample.txtTarefa 1: Imprima sample.txt com numeros de linha usando nl (linhas em branco podem ficar sem numero).
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 tambem.
Mostrar dica
Defina o estilo de numeracao do corpo para all com -b a.
Resposta exemplo
$ nl -b a sample.txt
Tarefa 3: Imprima sample.txt com numeros preenchidos com zeros de 3 digitos (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
Conclusao: Mantenha os padroes comuns a mao: basico, todas as linhas, formatacao e redirecionamento.
Padroes 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