Tratamiento de Texto en Unix

Teclado

Unix y Linux son sistemas operativos que tiene muchas herramientas útiles para hacer una infinidad de tareas, para ello uno de sus secretos es que deberemos perderle el miedo a usar la consola o terminal, para realizar estas tareas deberemos ingresar comandos de consola para la manipulación de archivos de texto plano. En esta sección aprenderemos algunos trucos útiles.

Como convertir HTML a PDF

No vamos a comentar en que circunstancias es necesario hacer esto, pero es evidente, sobre todo cuando existen manuales en html queremos pasarlo a un formato mas universal como pdf.

Si editamos un html, nos encontraremos con un texto rodeado de un montón de sentancias y simbolos que si tratamos de leerlo difícilmente entenderemos algo, pero si el mismo archivo lo llevamos en PDF, veremos una gran diferencia.

Para realizar esta conversión con una sola linea en una consola deberemos instalar en nuestra máquina el paquete htmldoc.

# aptitude install htmldoc --> Para Debian

Ahora ya que lo tenemos instalado usaremos el siguiente comando, suponiendo que tenemos un archivo HTML (origen.html) en el mismo directorio en donde estamos parados.

$ htmldoc -t pdf14  origen.html --size letter  --title  --links \
 --linkstyle plain  --linkcolor blue --left 10mm  \
--right  10mm  > destino.pdf

Con esto le hemos indicado al comando htmldoc que:

  • La salida del documento usará pdf14.
  • El tamaño de la pagina es Carta.
  • Que ponga las URL en color azul.
  • Que use 10mm para el borde derecho e izquierdo.
  • Genere un archivo de salida llamado destino.pdf

Hay una opción que permite convertir una pagina WEB a un formato PDF, esto es especialmente útil si sacamos el código HTML de la página y lo guardamos en un archivo, posteriormente editamos ese archivo y podemos modificar su contenido, pero el htmldoc requiere que se le informe que el html es de una pagina web, esto se hace por ejemplo con el mismo comando anterior pero agregando la opción –webpage.

$ htmldoc -t pdf14  origen.html --webpage --size letter  --title  --links \
 --linkstyle plain  --linkcolor blue --left 10mm  \
--right  10mm  > destino.pdf

Como Imprimir Código en Formato PDF más Agradable

Salida en hoja tamaño carta: Salida de Impresora

Podemos encontrar en muchas partes el texto plano, de hecho fue uno de las primeros formatos de texto, el problema con esto es que carecen de formato, no tiene alineación de texto, no tiene fonts, sólo el por default lo que no hace del todo grato su uso frente a otras herramientas, pero como lo importante es su contenido, es indispensable tratarlo un poco para mejorar su aspecto.

Para el tratamiento de texto plano a ps (postscript), usaremos una estupenda herramienta llamada a2ps, para mayor detalle ver página del proyecto. Esta herramienta que en realidad en un programa con un montón de opciones interesantes, permite imprimir un texto plano de origen a un formato más enriquecido, buscando la mejor forma de imprimirlo, a un archivo a la impresora. Uno de los usos más interesantes es cuando quiero imprimir código fuente de un programa, ya que permite resaltar las palabras claves del lenguaje dejando mucho más atractiva su lectura o impresión.

Personalizar el Encabezado y Pie de Página

Si por ejemplo deseamos imprimir un programa que tenemos en código fuente, y deseamos enriquecer un poco más el texto, podemos imprimirle información de encabezado y pié de página, con datos de fecha, autor o números de línea. Esto lo hacemos con el siguiente comando en consola:

$ a2ps -1 --header=“Electrolinux” --footer=“Desarrollo proyecto válvula” \
--line-numbers 1 valvula.c -o valvula.ps 

Otra manera de obtener un mejor resultado del archivo de origen es el comando:

a2ps -v --line-numbers=1 --font-size=9 --copies=1 --sides=2 \
--landscape --chars-per-line=120 --truncate-lines=1 \
--highlight-level=normal -E --media=letter -2 --printer=printer \
archivo_origen.c -o archivo_destino.ps 

Debemos indicar también que a2ps, aún no maneja bien el encoding UTF-8 por lo que los archivos de texto plano deben ser evitados en la medida de lo posible los acentos o tildes o eñes.

Es inevitable usar Tildes o Eñes

En los casos en que requieramos usar los acentos o tildes y las eñes de nuestro lenguaje, también existe solución para ese problema, que requiere sólo algunos segundos más de tiempo, lo que deberemos hacer es un paso previo que es el siguiente:

$ recode UTF-8..ISO-8859-1  main_origen.c

Con esto hemos convertido de UTF-8 que es el encoding de prácticamente todos los Unix o Linux actuales al encoding ISO-8859-1. Este paso es previo para codificar correctamente el archivo plano y pasarlo al formato que maneja bien a2ps.

Y ahora ejecutamos el comando a2ps de la siguiente forma:

a2ps -1 --header="www.electrolinux.cl" --footer="Proyecto SmartValvule" \
main_origen.c -o salida_main.ps

Como Convertimos de PS a PDF

Ahora tendremos un archivo PostScript llamado salida_main.ps, y por último lo convertimos a PDF, con el comando siguiente, para nuestro ejemplo:

$ ps2pdf14  salida_main.ps

Como Chequear Ortografía

Lo que debemos instalar previo a poder usar una aplicación que permite chequear la ortografía sobre archivos de texto es la aplicación:

  • En Linux es aspell y aspell-es
  • En OSX la aplicación es se debe ejecutar el comando brew install aspell - - with-lang-es

El primer comando es para Linux y el segundo es para ser instalado en OSX, ambos Unix permiten corregir la ortografía de archivos de texto plano.

El comando para chequear la ortografía es:

aspell -c -l es archivo_texto.txt

Como filtramos listados

Hay herramientas muy poderosas sobre texto en Unix/Linux, tal como sed dentro de este comando de consola pondremos un sólo ejemplo que nos permite ver su versatilidad.

sed -e '/^;/d' /etc/php.ini --> Filtra el caracter ';'
sed -e '/^#/d' file1.txt    --> Filtra el caracter '#'

Este comando nos elimina de la salida todos las líneas de los caracteres que comienzan con ; o con # y nos permite ver las sentencias del archivo que son las que influyen en su configuración, dado que la gran mayoría son comentarios y documentación de cada parámetro.

La segunda forma es usar el comando grep de esta forma:

cat file1.txt | grep -v ';' > file2.txt
cat file1.txt | grep -v '#' > file2.txt

Este comando entrega su salida a un archivo file2.txt con el contenido de las líneas útiles, sacando los comentarios y la documentación del archivo file1.txt, suponiendo que estos comienzan con el caracter ; o el carácter #.

Como unir archivos rar en Linux

Muchos usuarios linux se preguntan eso, sobre todo cuando están recien llegados y no conocen las poderosas herramientas disponibles en Linux o en algún Unix. Para ello deberemos disponer de los paquetes instalados en nuestro sistema, con este comando en consola:

# aptitude update
# aptitude install rar && aptitude install unrar

Una vez que hemos instalado estos paquetes en forma correcta, lo que deberemos hacer para juntar varios archivos rar en un sólo archivo es con el siguiente comando en consola:

$ unrar x archivo_rar.parte1.rar

Lo que la aplicación hace es descomprimir la primera parte del archivo y sucesivamente va por las siguientes partes, ya que la información de la parte siguiente se encuentra en el formato rar de la primera parte.

Uso de PDFTK

Esta herramienta permite manipular PDF's, permite extraer páginas, combinarlas, combinar varios PDF's en uno sólo de salida, en fin se pueden realizar varios tipos de manipulaciones con esta herramienta, como ejemplo tenemos el siguiente comando en consola, que permite extraer paginas no secuenciales en un archivo:

Instalando PDFTK

El comando a continuación permite realizar la instalación en Linux con una distro derivada de Debian:

# aptitude install pdftk

Para otras distros ver pdftk.

Extraer Páginas no Secuenciales

$ pdftk A=origen.pdf cat A1 A2 A11 A16 A23 A29 A35 A37  output salida.pdf

Este comando permite extraer las páginas 1,2,11,16,23,29,35,37 del archivo origen.pdf y los deja en otro archivo llamado salida.pdf.

Extraer Páginas Secuenciales

$ pdftk A=origen.pdf cat A1-6  output salida.pdf

Este comando permite extraer las páginas desde la 1 a la 6 del archivo origen.pdf y los deja en otro archivo llamado salida.pdf.

Combinar 2 PDF's en Otro PDF

$ pdftk A=origen1.pdf B=origen2.pdf cat A1-4 B3-6 output salida.pdf 

Este comando permite extraer del archivo origen1.pdf las páginas 1 a la 4, y del archivo origen2.pdf desde la 3 a la 6 y sacarlas a un archivo de salida.pdf.

Hay otra combinación de posibilidades de este comando que es posible realizar pero con estos comandos tenemos para empezar.

Como Eliminar Algunas Páginas de un PDF

Hay veces que hemos combinado varios PDF's en un único documento de varias páginas y necesitamos eliminar algunas páginas, en el siguiente ejemplo tenemos un documento de 59 páginas y queremos eliminar la 2, 28 y la 47, lo hacemos de la siguiente forma:

pdftk origen.pdf cat 1 3-27 29-46 48-59 output salida.pdf

El documento salida.pdf tiene eliminadas las páginas indicadas.

Manipulando PDF's

pdf

En paralelo a PDFTK existe otra aplicación Unix que permite realizar una tarea específica con los PDF, que es poder transformar un PDF de varias paginas, en donde tiene una página por cara de la hoja a combinar 2 páginas por cara de la hoja, eso permite imprimir a media página en forma horizontal por página, lo que permite ahorrar en papel y por otro lado disponer de dos páginas en la misma cara de la hoja.

Este cambio se realiza con al herramienta pdfnup que son parte de las herramientas del paquete PDFjam, las cuales existen en Unix (Linux, BSD y OSX).

Como se utiliza esta herramienta:

$ pdfnup --nup 2x1 archivo_entrada.pdf

Esto generará un archivo llamado archivo_entrada-nup.pdf que corresponde a la salida del archivo de entrada ya modificado.

Para modificar el nombre del archivo de salida podemos utilizar el comando siguiente:

pdfnup --nup 2x1 --suffix "2x1" archivo_entrada.pdf

Esto permite generar un archivo de salida en el mismo directorio, con el nombre de archivo_antrada-2×1.pdf.

Cambiar Permisos a una Estructura de Directorios en Unix

Hay veces que debemos cambiar los permisos de ciertos archivos que se repiten en un árbol de directorios y la gracia, no es hacerlos archivo a archivo, para ello recurrimos a una combinación de comandos de consola que nos permite hacerlos con un comando, de la forma siguiente:

Cambia Permisos a un tipo de Archivo dentro del Árbol

$ find . -name \*\.php -exec chmod 660 {} \;

Lo que este comando realiza, es buscar, desde donde estoy parado, hacia abajo y dentro de todo el árbol, los archivos que terminen con la extensión .php y le cambia los permisos a 660 (rw- rw- - - -).

Cambia los Permisos a todos los Archivos de un Árbol

Este comando cambia los permisos a todos los archivos del árbol, desde donde estoy parado hacia abajo.

$ find . -type f -exec chmod 660 {} \;

Cambia Permisos a los Directorios de un Árbol Completo

Este comando permite cambiar todos los directorios de un árbol a permisos 770, lo que los deja sólo ser modificados por el dueño y el grupo.

$ find . -type d -exec chmod 770 {} \;

Borrar un Mismo Archivo en Muchos (sub)Directorios

Cuando usamos distintos sistemas operativos y tenemos procesos automatizados de respaldos entre distintas plataformas, en ocasiones se transfieren archivos de control entre sistemas, el caso típico es el archivo .DS_Store que usa OSX que lo usa en todos los directorios, pero cuando transferimos los backup a otros Unix, estos archivos se transforman en basura.

Este es el caso de los backup's o por otras razones, tenemos un archivo repetido en muchos directorios y subdirectorios y la opción de borrar uno por uno, no es algo que estemos dispuesto a realizar, sería una pérdida de tiempo y una tortura ir borrando archivo por archivo, para ello tenemos herramientas es nuestro sistema que nos hace muy simple el poder hacerlo.

En un terminal podemos ejecutar el comando que indico para saber donde se encuentra nuestro archivo muchas veces duplicado:

$ find . -name ".DS_Store" -type f

Estos nos lista todos los archivos con el nombre .DS_Store que están en el directorio donde nos encontramos y en todos los subdirectorios que depende de este.

Para borrar estos archivos desde un sólo comando, lo que haremos es utilizar esta misma línea de comandos que usamos para listarlos pero ahora para borrarlos.

$ find . -name ".DS_Store" -type f -delete

La opción -delete, nos permite borrar el archivo en forma recursiva para todo el árbol de directorios que se encuentran por debajo de donde nos encontramos y ejecutamos el comando.

/var/www/html/data/pages/servicios/informaticos/tratexto.txt · Última modificación: 18/01/2019 16:22 (editor externo)
Recent changes RSS feed Creative Commons License Donate Minima Template by Wikidesign Driven by DokuWiki