martes, 29 de septiembre de 2015

Exportar notas de Kindle en Linux

Kindle
Los que tengáis el lector de libros electrónicos Kindle seguramente sabréis cómo gestiona las notas de vuestros libros y documentos. En la memoria interna hay una carpeta llamada documents y dentro hay un archivo llamado My Clippings.txt que es el que guarda todas las notas, subrayados y marcas que hagamos en nuestros documentos, ordenados cronológicamente. Por ejemplo:

==========
blogs_2015.07.26 
- Tu subrayado en la posición 3115-3116 | Añadido el lunes, 3 de agosto de 2015 23:57:42

GitHub lanza la primera edición estable de su editor Atom | La mirada del replicante
==========
blogs_20150817_2121
- Tu subrayado en la posición 42-42 | Añadido el sábado, 22 de agosto de 2015 16:27:23

Tails 1.5
==========
La conjura de los necios (John Kennedy Toole)
- Tu marcador en la posición 2179 | Añadido el domingo, 30 de agosto de 2015 8:35:45
==========
La conjura de los necios (John Kennedy Toole)
- Tu marcador en la posición 2236 | Añadido el domingo, 30 de agosto de 2015 23:57:49
==========

Si queremos exportar nuestras notas, lo que podemos hacer es conectar mediante USB nuestro Kindle y copiar donde deseemos el archivo My Clippings.txt . ¿Cual es el problema?, que todas esas notas y subrados de nuestros libros están mezclados, de modo que no podemos exportar únicamente las notas de un determinado libro. Claro, se podría hacer a mano, copiando y pegando pero sería un proceso de lo más tedioso. Por eso vamos a explicar cómo hacerlo rápidamente utilizando el terminal Linux y en concreto el comando sed. Ya vimos en el post Reemplazar texto de varios archivos en Linux el uso de este comando pero en esta ocasión no reemplazaremos texto sino que lo redireccionaremos a un nuevo archivo.
Veamos:
sed -n '/La conjura de los necios/,/==========/p' My\ Clippings.txt > La conjura de los necios

Ésto lo que hará será copiar todas las subcadenas entre La conjura de los necios y ========== y las copiará a un archivo llamado La conjura de los necios. Ésta sería la idea básica, pero existe un pequeño escollo que salvar, que es el caso de que la cadena de entrada tenga espacios en blanco. En el siguiente script se soluciona:
#!/bin/bash
read -r -p "Indica el nombre (o parte del nombre) del libro:" archivo
busqueda=$(echo"$archivo" | sed 's/ /\\ /g')
sed -n '/'"$busqueda"'/,/==========/p' My\ Clippings.txt > $archivo.txt
echo"Creado el archivo "$archivo.txt

La línea busqueda=$(echo “$archivo” | sed ‘s/ /\ /g’) del script lo que hace es sustituir los espacios en blanco de la cadena de entrada y los sustituye por barra invertida y espacio en blanco. Ésto se hace así para que la búsqueda con sed se haga correctamente en caso de que la cadena de entrada tenga espacios en blanco, como pasa con La conjura de los necios.

Nota: La búsqueda es sensible a mayúsculas y minúsculas.
Espero que os sea útil. Podéis utilizar los comentarios para aclarar cualquier duda.


Fuentes:

http://linux.die.net/man/1/sed
http://stackoverflow.com/questions/2462385/getting-an-ambiguous-redirect-error




Sea el primero en comentar

Publicar un comentario

Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO