it-swarm.dev

¿Cómo puedo anteponer un número de línea y una pestaña a cada línea de un archivo de texto?

¿Cómo puedo agregar un número de línea y una pestaña al comienzo de cada línea de un archivo de texto?

44
Richard Hoskins
awk '{printf "%d\t%s\n", NR, $0}' < filename
50
pgs

El comando nl debería hacer esto, pero también agrega espacio antes del número de línea. Es parte de Linux Coreutils.

nl lines.txt
 1  $bkWTN
 2  $cV8$.
52
ACoolie
sed = test.txt | sed 'N;s/\n/\t/'

El comando "sed =" imprimirá el número de línea seguido de un retorno de carro y luego la siguiente línea.

La expresión "N; s/\ n/\ t /" tomará cada línea, obtendrá la siguiente línea (es decir, el número de línea y la línea) y reemplazará el retorno de carro con una pestaña.

10
Callum
cat -n <yourfile> | Perl -pe "s/^\s*(\d+)\s+/\1\t/"

cat -n agrega a Linumberumbers como "123 linecontents" y esa expresión regular lo modifica a "linenumberTABlinecontents"

4
raspi
Perl -pe "s/^/$.\t$_/" file.txt

o

Perl -ne "print qq($.\t$_)" file.txt
3
itsadok

OK, aquí hay una solución de bash de una línea:

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

La primera configuración de IFS le dice a bash que lea una línea completa a la vez. La segunda línea restablece el valor predeterminado de IFS.

Como un bono adicional, se ejecuta completamente en su Shell y no ejecuta un programa!

2
P. Heffner

Qué tal si

cat -n somefile.txt

?

2
innaM

Ok, ya que estamos recolectando maneras de hacer esto,

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

o para algunos seds no-GNU:

cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'
1
chaos