Primero pensé en SED ( sed "s/^/COUNTER \&/" /tmp/1.tex
), pero está diseñado para una sola línea, y no puedo incrementar el contador por sí mismo, así que ahora pienso awk
porque tengo grandes experiencias con gawk
enfoques integrados. Datos
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
Rendimiento esperado
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
SO: Debian 8.5
text-processing
awk
nl
Léo Léopold Hertz 준영
fuente
fuente
nl -s ' &' /path/to/file
.-s
especifica qué separa los números del cuerpo del archivo de entrada.nl
difiere decat -n
y laawk
solución en que noEsto logra lo que buscas. (como lo hace
awk '$0=NR" & "$0' filename
, pero eso es un poco críptico)O si es
sed
preferible, esto da el mismo resultado.perl
enfoques.fuente
sed = filename | ...
? - - No sabía que puedes usar sed con elequal
símbolo. - - ¿Puede sused
declaración funcionar en entornos dinámicos? ¿Alguna debilidad?=
operador está en la sección "Comandos de cero o una dirección".= Print the current line number
. Por lo tanto, la función está incorporada en sed. ¡Agradable!Python puede ser una buena herramienta alternativa para esto:
La forma en que esto funciona es que redirigimos el texto al stdin de Python y leemos líneas desde allí.
enumerate()
La función es lo que da el recuento de líneas,sys.stdin
especificado como entrada y1
es el índice inicial. El resto es simple: hacemos una lista de nuevas cadenas al convertir el índice como una cadena unida con una' & '
cadena y la línea misma. Finalmente, todo lo que la función vuelve a montar de la lista en una prueba''.join()
.Alternativamente, aquí hay una versión de varias líneas para un archivo de script o simplemente para facilitar la lectura:
Funciona igual:
Pero si prefieres hacerlo en bash, entonces eso también se puede hacer:
fuente
enumerate()
ahorra como 3 líneas de código. Es útil cuando se trata con otras cosas, como procesar elementos en listas. Ver docs.python.org/2/library/functions.html#enumeratebash
ejemplo, entonces siéntete libre de usar eso :) Por experiencia me parecióenumerate()
más elegante, pero esa es solo mi opinión. Por supuesto, use otro método si cree que está más claroenumerate
es más claro que la instanciación variable. ¿Puede la expresión lambda ahorrar algo de espacio?Esta también es una opción que se usa
cat -n
con la numeración automática:fuente