¿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?
¿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?
Respuestas:
awk '{printf "%d\t%s\n", NR, $0}' < filename
awk '{print NR, "\t", $0}'
.
nl
también es INCORRECTA. En el código fuente, nunca le dará los números de línea correctos, ya que no cuenta líneas con solo espacios en blanco.
El comando nl debería hacer esto, pero también agrega espacio antes del número de línea. Es parte de los coreutils de Linux.
nl lines.txt
1 $bkWTN
2 $cV8$.
nl
que omita el espacio antes del número. Simplemente use la -w1
opción para indicarle que el ancho mínimo para un número es 1.
-nln
usted puede justificar a la izquierda si no desea los espacios antes de los números de línea. Además, para especificar un separador de pestañas que podría usar -s$'\t'
o -s' '
(inserte una pestaña entre las comillas simples con ctrl+v
entonces tab
).
nl -w1
(de GNU coreutils 8.24) no trunca los números de línea.
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.
\n
es el avance de línea (comúnmente llamado simplemente "nueva línea", ya que su primer uso generalizado fue en Unix), y \r
es el retorno de carro. Usos de Windows \r\n
(también conocidos como CRLF
).
Qué tal si
cat -n somefile.txt
?
OK, aquí hay una solución 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 IFS al valor predeterminado.
Como una ventaja adicional, se ejecuta completamente en su shell y no ejecuta un programa.
Ok, ya que estamos recopilando formas de hacer esto,
grep -n . file.txt | sed 's/\(^[0-9]*\):/\1 /g'
# this is a tab with Ctrl-V + Tab =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
o para algunos no GNU sed
:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'