Recientement me han pasado documentos con formato Visual Foxpro FW2 y necesitaba adaptarlos para leerlos en Word.
El problema es que el aspecto del fichero al abrirlo era:
Mi solucion fue usar el comando tr
Su sintaxis es un poco liosa, pero miraremos de explicarla lo mejor que podamos.
tr [OPCIÓN] … SET1 [SET2]
Donde [OPCIÓN] pueden ser cualquiera de las siguientes.
* -d Borrar los carácteres indicados en SET1
* -s Elimina o reemplaza los carácteres repetidos indicados en SET1
* -c Todos los carácteres que no sean los indicados en SET1 los convierte en SET2
* -t Trunca SET1 a la longitud de SET2
El comando reconoce los siguientes carácteres no visibles.
\NNN carácter con valor octal NNN (de uno a tres dígitos)
\\ barra invertida
\a pitido audible (BEL)
\b espacio hacia atrás
\f salto de página
\n salto de línea
\r retorno de carro
\t tabulación horizontal
\v tabulación vertical
Comando usado
cat fichero.fw2 |tr -cd ‘[:print:]\n’
El segundo «tr» comando elimina todos los caracteres que no se encuentra en la «impresión de caracteres» conjunto denominado «:print: «Con excepción de un carácter de avance de línea» \ n «.
El primer «tr» comandos ya ha eliminado algunos personajes que están en la «impresión de caracteres» set. Se refiere al valor octal de cada personaje (por ejemplo, \ 003 es el código de control Ctrl / C).
El resultado final contiene un subconjunto de los personajes que están en la «impresión de caracteres» establecer o caracteres de salto de línea.
En mi PC Unix la explicación del significado de «: de impresión:» está en «man 5 expresiones regulares». Probablemente será en otro «hombre» de la página en Linux.
A parte inclui algunas sentecias para facilitar su adaptacion:
for i in `ls -1`
do
nombrefichero=$(echo $i|awk ‘{print substr($1,1,9)}’)
echo $nombrefichero
cat $i |tr -cd ‘[:print:]\n’ |awk ‘gsub(/A=/,»\n»)’ |awk ‘gsub(/ /,»\n»)’ > $nombrefichero»doc»
done