Posts etiquetados como ‘Perl’

Copiar versos “incopiables” (BASH + Perl)

Domingo, febrero 20th, 2011

¿Alguna vez habeis intentado copiar algo de un PDF y se os han comido “mágicamente” los saltos de línea?

Yo me he bajado la música de El Reno Renardo, y sus letras, e intenté poner las letras a sus canciones en iTunes.

Y cuando estaba copiando y pegando, ¡sorpresa, los saltos de línea no se copiaban!

Si teneis un Mac y teneis la suerte, como yo, de que en cada línea las frases empiezan por mayúscula (y no hay muchas más mayúsculas por el texto), pocos retoques tendreis que hacer a lo que aquí os dejo.

cat - | perl -pe 's/([A-Z][^A-Z]+,? [a-z]+)/\n$1/g' | pbcopy

Cómo funciona:

Pegais el texto en la consola después de teclear el comando y pulsar enter.
Para finalizar la entrada de texto pulsais Ctrl.+D y el texto se guardará en el portapapeles.

Explicado: cat - lee lo que introduces por la entrada estándar, y el | (pipe) lo introduce como entrada del siguiente comando.

El siguiente comando es una sustitución por expresiones regulares con Perl. La expresión dice: Sustituir [LetraMayúscula]+[Algo que no es una letra mayúscula] [opcionalmente una coma] [más de una minúscula] y poner antes de todo eso un salto de línea.

pbcopy es un comando de Mac OS para copiar al portapapeles.

Esto es fácilmente adaptable a cualquier otro Unix, cualquier Linux: simplemente cambiando el último | pbcopy por un > output , el script generará un fichero ‘output’ con la salida deseada.

Tal vez tenga un par de errores en cuanto a cosas raras o texto en mayúsculas a mayores que pueda haber. Si a alguien le sirve, por favor, hacédmelo saber ;)