sábado, 10 de marzo de 2012

Agregar números de línea a un archivo

Hace poco tuve la necesidad de agregar bloques de línea del tipo N10, N20 ... a un código NC para que lo pudiese reconocer el controlador de la máquina CNC. Como no tenía a la mano un editor de código NC, me pregunté si se podría hacer con bash en linux. Por supuesto, después de googlear un poco me encontré con la instrucción sed y la forma más popular de agregar números de líneas.


sed = archivo.txt | sed 'N;s/\n/0 \ /'

Donde archivo es el código que quiero editar. Esta instrucción permite agregar los números de líneas de 10 en 10, si queremos que lo haga normalmente (1,2,3...etc)  sólo hay que escribirla así.


sed = archivo.txt | sed 'N;s/\n/ \ /'

El problema es que esto sólo agrega los número de líneas, pero no el bloque "N" que requiere el controlador, esta fué la parte más difícil de lograr, pero nuevamente después de buscar con mayor detenimiento en los manuales del comando  sed di con la solución:

 sed 's/^/N/' > archivo.txt



Esta instrucción agrega cualquier secuencia de caracteres al comienzo de cada línea de un archivo , en este caso la "N" que necesito para mis números de bloque. Así que básicamente lo que hago es aplicar estas dos instrucciones en secuencia:


sed = archivo.txt | sed 'N;s/\n/0 \ /'> archivo_inter.txt 

y luego
 
sed 's/^/N/' > archivo_inter.txt > archivo_final.txt



En este caso la primera instrucción crea un archivo intermedio donde se agregan los números de línea, la segunda instrucción toma éste y le agrega las "N's" y los guarda en un archivo final, Todo esto en dos líneas y sin tener que recurrir a un editor de código CNC.
 
Bueno, eso es todo. Algo muy sencillo pero que le puede ser de utilidad a alguno. 

No hay comentarios:

Publicar un comentario