Elimina por consola los signos > de los correos reenviados
Publicado el 24 de octubre de 2008Leyendo el blog del amigo SpamLoco, me encontré con la entrada Eliminar los signos > de los correos reenviados. En ella, comenta de un programa para un sistema operativo que por acá no usamos, que permite eliminar los signos “>” en los correos reenviados o respondidos muchas veces. ¡Inspiración! También se puede hacer por línea de comandos:
fernando@nando-debian:~$ cat email.txt >>El script permite eliminar todos los > que aparecen >>cuando un correo es reenviado muchas veces. >>Simplemente debes pasarlo como parámetro a este script. fernando@nando-debian:~$ sed 's/>*//' email.txt El script permite eliminar todos los > que aparecen cuando un correo es reenviado muchas veces. Simplemente debes pasarlo como parámetro a este script.
Podemos usar los signos > mismos para redirigir la salida de este comando. Por ejemplo:
fernando@nando-debian:~$ sed 's/>*//' email.txt > email2.txt |
Si guardamos la línea en un archivo .sh con permiso de ejecución, puede quedar algo así:
#!/bin/bash sed 's/>*//' $1 > p$1 && mv p$1 $1 |
Y el archivo de correo se pasa como parámetro:
./script.sh email.txt |
El programa en cuestión pesa 280 Kb. El script pesa 47 bytes 😀
Alejandro Segovia 24 octubre. 2008 - 12:16
También puedes utilizar sed para hacer una sustitución “inplace”, de la siguiente manera:
GNU:
sed -i “s/>*//” $1
BSD:
sed -i “” “s/>*//” $1
Saludos!
fernando 24 octubre. 2008 - 21:17
Gracias Alejandro.
Saludos
anonimo 24 octubre. 2008 - 23:40
Este tipo de cosas hoy en día no tienen ningún valor, por mucho que las publiques a modo “generoso”. Asúmelo, nadie lo usará a menos que integres la funcionalidad en un cliente de correo, por ejemplo Thunderbird, Evolution, etc.etc.
fernando 25 octubre. 2008 - 05:54
Mmmmmmmmmhhh… Pero puedo hacerlo…
Y eso es lo que importa.
Si programara solo cosas que los usuarios van a usar, me aburriría mucho.
No entiendo el objetivo de tu mensaje…
Pablo 25 octubre. 2008 - 17:47
Fernando,
Probaste el ejemplo antes de incluirlo aquí ?
Pregunto porque esto no funciona 🙂
La razón es simple, si ejecutas:
cmd P > P
el redirect de la shell borrara el archivo P
ANTES de ejecutar el comando cmd.
Al final tendrás un archivo con 0 bytes.
Para que funcione deberías hacer algo así:
cmd P > P1 && mv P1 P
Por esta razón, hacer un script con esto:
cmd $1 > $1
es lo mismo que hacer:
> $1
o puesto de otra forma:
rm $1
touch $1
Por lo demás, esta bueno ya que le puede
servir a alguien que este aprendiendo
sed y expresiones regulares.
Bye
fernando 25 octubre. 2008 - 18:20
Es verdad, no probé de guardar el resultado del script con >. Cómo no me di cuenta :S
Ya quedó corregido.
¡Muchas gracias Pablo!