Como posso inserir um número de linha e uma guia em cada linha de um arquivo de texto?

42

Como posso adicionar um número de linha e uma guia ao início de cada linha de um arquivo de texto?

    
por Richard Hoskins 21.07.2009 / 18:30

9 respostas

49
awk '{printf "%d\t%s\n", NR, $0}' < filename
    
por 21.07.2009 / 18:59
51

O comando nl deve fazer isso, mas também adiciona espaço antes do número da linha. Faz parte dos coreutils do Linux.

nl lines.txt
 1  $bkWTN
 2  $cV8$.
    
por 21.07.2009 / 18:48
9
sed = test.txt | sed 'N;s/\n/\t/'

O comando "sed=" imprimirá o número da linha seguido por um retorno de carro e depois a próxima linha.

A expressão "N; s / \ n / \ t /" tomará cada linha, obterá a próxima linha (isto é, o número da linha e a linha) e substituirá o retorno de carro por uma tabulação.

    
por 21.07.2009 / 18:39
4
cat -n <yourfile> | perl -pe "s/^\s*(\d+)\s+/\t/"

cat -n adiciona os linenumbers como "123 linecontents" e o regexp o modifica para "linenumberTABlinecontents"

    
por 21.07.2009 / 18:40
3
perl -pe "s/^/$.\t$_/" file.txt

ou

perl -ne "print qq($.\t$_)" file.txt
    
por 21.07.2009 / 19:27
2

Que tal

cat -n somefile.txt

?

    
por 21.07.2009 / 18:38
2

OK, aqui está uma solução bash de uma linha:

$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=

A primeira configuração do IFS diz ao bash para ler uma linha completa de cada vez. A segunda linha redefine o IFS para o padrão.

Como um bônus adicional, ele é executado completamente no seu shell e não executa um programa!

    
por 18.09.2015 / 14:34
1

Ok, já que estamos coletando maneiras de fazer isso,

 grep -n . file.txt | sed 's/\(^[0-9]*\):/    /g'
 # this is a tab with Ctrl-V + Tab  =====>  ---- 
    
por 21.07.2009 / 19:49
1
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'

ou para alguns não-GNU sed s:

cat file.txt | sed -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
    
por 21.07.2009 / 18:46

Tags