La respuesta a continuación, con la línea de comando nl, es una solución mucho más simple.
Daniel Ribeiro
2
@DanielRibeiro más simple pero menos confiable y menos flexible.
Jonathan Hartley
@DanielRibeiro La respuesta usando nltambié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.
oligofren
@jtbandes Su solución agrega espacios entre el número de línea y la pestaña (al menos en mi Mac)
Yossi Vainshtein
55
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.
En realidad, puede decir nlque omita el espacio antes del número. Simplemente use la -w1opción para indicarle que el ancho mínimo para un número es 1.
cjm
2
Tenga en cuenta que 'nl' asume por defecto que su texto está dividido en 'páginas' con encabezados y pies de página, todos delimitados por líneas como '\:' o '\: \:' o '\: \: \:'. Si su texto tiene líneas como esta, entonces 'nl' producirá resultados inesperados, como tragar esas líneas, secciones sin numeración o reiniciar la numeración desde 1 en una sección. Use -dXY (donde XY es un par de caracteres que no aparecen en una línea en su texto) para evitar este comportamiento. En el caso general, esto puede ser difícil de predecir, por lo que recomendaría usar una de las otras soluciones en esta página.
Jonathan Hartley
El uso de '-w1' no solo eliminará el espacio después de los números, sino que también truncará los números de línea para que solo tengan un carácter de ancho, lo que significa que sus números de líneas solo muestran su dígito menos significativo. Esto es casi seguro que no es lo que quieres.
Jonathan Hartley
44
Con -nlnusted 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+ventonces tab).
don_crissti
2
@JonathanHartley nl -w1(de GNU coreutils 8.24) no trunca los números de línea.
Skippy le Grand Gourou
10
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.
Imprime una "T" con ninguna ficha con mi versión de sed: 8t Vi las mejores mentes de mi generación destruidas por la locura 9t, famélicos, histéricos, desnudos,
Richard Hoskins
1
Tenga en cuenta que \nes el avance de línea (comúnmente llamado simplemente "nueva línea", ya que su primer uso generalizado fue en Unix), y \res el retorno de carro. Usos de Windows \r\n(también conocidos como CRLF).
Camilo Martin
(¡Qué asco!)
Camilo Martin
Si vamos a entrar en detalles sobre cómo las ventanas pueden ser diferentes, entonces es posible que debamos considerar UTF16.
Respuestas:
fuente
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.
fuente
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 conctrl+v
entoncestab
).nl -w1
(de GNU coreutils 8.24) no trunca los números de línea.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.
fuente
\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 comoCRLF
).cat -n agrega números de lino como "123 contenidos de línea" y esa expresión regular lo modifica a "lino número de contenido de línea B"
fuente
o
fuente
Qué tal si
?
fuente
OK, aquí hay una solución bash de una línea:
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.
fuente
Ok, ya que estamos recopilando formas de hacer esto,
fuente
o para algunos no GNU
sed
:fuente