Es más al revisar el archivo con vi nos encontramos con algo como esto:
La parte funcional la implementaremos usando el programa tr de la siguiente forma:
tr -d '\r' < archivo_a_limpiar > archivo_limpio
Ahora bien una función en el interprete de comandos se puede implementar de la siguiente forma:
Nombre_Funcion()
{
Comando_1
Comando_2
...
Comando_N
}
Llamaremos a nuestra funcion strip_cr, para que la misma pueda procesar un archivo sobre demanda, debemos especificarlo mediante un parametro. Los parámetros en una función shell se especifican como $1,$2,... $9 para el primero, el segundo y hasta el noveno parametro.
Por tanto la entrada de nuestro comando tr sería de la siguiente forma:
tr -d '\r' < $1
La salida del comando no puede ser el mismo archivo de entrada, por lo que ocupamos la variable especial $$ que almacena nuestro id de proceso. Así:
tr -d '\r' < $1 > $1.$$
Sin embargo tendríamos que consultar siempre cual es el archivo mas reciente, que se llame igual que el original mas un "." (mucho lío ¿no les parece?). En lugar de eso después de obtener la salida sustituimos el original con el nuevo archivo:
tr -d '\r' < $1 > $1.$$
mv $1.$$ $1
Al final nuestra subrutina quedaría así:
strip_cr()
{
tr -d '\r' < $1 > $1.$$
mv $1.$$ $1
}
y al ejecutarla el resultado seria el siguiente:
Que como podemos ver carece ya de los caracteres ^M que se visualizaban antes.
0 comentarios:
Publicar un comentario