Discussion:
[shell-script] Ajuda com SED
Gmail t.collons@gmail.com [shell-script]
2016-09-17 22:51:01 UTC
Permalink
Boa tarde:

Preciso de ajuda para ver se você pode acelerar um processo , eu tenho
que recolher mails de cerca de 400 máquinas, felizmente, estão em
Thunderbird no formato mbox , mas há muitas caixas de correio que são
compartilhados em muitas das máquinas, por várias razões , nem todos
arquivos mbox têm o mesmo número de e-mails , alguns têm mais outros têm
menos , e muitos são repetidas.

Estou usando SED , para que em todas as pastas , as mensagens permanecem
marcadas como não lidas . Então é mais fácil de trabalhar , eu acho.

O que usamos agora é este script que recorre todas as pastas dentro MAIL

*find * -type f > fitxersmbl; **
**cat fitxersmbl | sed
'/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' > fitxersmbl-net; **
**while read line; **
** do IFS='.' read lastname <<< $line; **
** echo "$lastname";**
**
**sed -i'.old' 's/Mozilla-Status: 0001/Mozilla-Status: 0000/g;**
**s/Mozilla-Status: 0003/Mozilla-Status: 0002/g;**
**s/Mozilla-Status: 0005/Mozilla-Status: 0004/g;**
**s/Mozilla-Status: 0009/Mozilla-Status: 0008/g;**
**s/Mozilla-Status: 0011/Mozilla-Status: 0010/g;**
**s/Mozilla-Status: 0021/Mozilla-Status: 0020/g;**
**s/Mozilla-Status: 0081/Mozilla-Status: 0080/g;**
**s/Mozilla-Status: 0101/Mozilla-Status: 0100/g;**
**s/Mozilla-Status: 0201/Mozilla-Status: 0200/g;**
**s/Mozilla-Status: 0401/Mozilla-Status: 0400/g;**
**s/Mozilla-Status: 0801/Mozilla-Status: 0800/g;**
**s/Mozilla-Status: 1001/Mozilla-Status: 1000/g;**
**s/Mozilla-Status: E001/Mozilla-Status: E000/g;**
**s/Mozilla-Status: 0013/Mozilla-Status: 0012/g;**
**s/Mozilla-Status: 0023/Mozilla-Status: 0022/g;**
**s/Mozilla-Status: 0083/Mozilla-Status: 0082/g;**
**s/Mozilla-Status: 0103/Mozilla-Status: 0102/g;**
**s/Mozilla-Status: 0203/Mozilla-Status: 0202/g;**
**s/Mozilla-Status: 0403/Mozilla-Status: 0402/g;**
**s/Mozilla-Status: 0803/Mozilla-Status: 0802/g;**
**s/Mozilla-Status: 1003/Mozilla-Status: 1002/g;**
**s/Mozilla-Status: E003/Mozilla-Status: E002/g;**
**s/Mozilla-Status: 0015/Mozilla-Status: 0014/g;**
**s/Mozilla-Status: 0025/Mozilla-Status: 0024/g;**
**s/Mozilla-Status: 0085/Mozilla-Status: 0084/g;**
**s/Mozilla-Status: 0105/Mozilla-Status: 0104/g;**
**s/Mozilla-Status: 0205/Mozilla-Status: 0204/g;**
**s/Mozilla-Status: 0405/Mozilla-Status: 0404/g;**
**s/Mozilla-Status: 0805/Mozilla-Status: 0804/g;**
**s/Mozilla-Status: 1005/Mozilla-Status: 1004/g;**
**s/Mozilla-Status: E005/Mozilla-Status: E004/g;**
**s/Mozilla-Status: 0019/Mozilla-Status: 0018/g;**
**s/Mozilla-Status: 0029/Mozilla-Status: 0028/g;**
**s/Mozilla-Status: 0089/Mozilla-Status: 0088/g;**
**s/Mozilla-Status: 0109/Mozilla-Status: 0108/g;**
**s/Mozilla-Status: 0209/Mozilla-Status: 0208/g;**
**s/Mozilla-Status: 0409/Mozilla-Status: 0408/g;**
**s/Mozilla-Status: 0809/Mozilla-Status: 0808/g;**
**s/Mozilla-Status: 1009/Mozilla-Status: 1008/g;**
**s/Mozilla-Status: 1011/Mozilla-Status: 1010/g;**
**s/Mozilla-Status: E009/Mozilla-Status: E008/g' **
**"$lastname"; **
**done < fitxersmbl-net*


Funciona, mas é muito lento , você vê que faz a mesma operação várias vezes.

Thunderbird utiliza o último dígito para marcar o e-mail como se ela foi
lida ou não, você pode perceber que o que eu faço é subtrair 1 dos
números ímpares , 1-3-5-9 e manter os três primeiros dígitos do seu
valor. Eu não ver como fazer subtração, dependendo se o número for ímpar.

Muito obrigado
--
Pere

***@gmail.com <mailto:***@gmail.com>



<http://www.imatge.com/>

------------------------------------

AVIS LEGAL

Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea i altres estats, Si VostÚ el rep per error o sense ser una de
les persones esmenades a la capçalera, haurà de destruir-lo sense
copiar-lo ni revelar-l'ho o qualsevol altre acció relacionada amb el
contingut del missatge i notificar-ho per correu electrònic a l'emissor
del missatge.

Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota l'empar
de la legislació civil, penal i administrativa nacional i internacional.

Gracies per la seva cooperació.

------------------------------------

LEGAL NOTICE

Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories. if you are not one of the intended recipients of the
message, you are legally obliged to delete the message content.
Furthermore, you are kindly requested to report immediately the incident
to the sender.

Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.

Thank you for your cooperation.
'Julio C. Neves' julio.neves@gmail.com [shell-script]
2016-09-18 01:04:59 UTC
Permalink
Hola Pere,
estou no mobile, então não tenho como testar, nem ver se é mais rápido, mas
se todas as linhas de fitxersmbl-net forem iguais a essas que vc mandou, tente
o seguinte:

$ Sai=$(sed -r 's/(.*)([0-9]{4})/printf \"\1%04d\\n"
$((\2-1))/' fitxersmbl-net); eval "$Sai"

Abcs,
Julio
*@juliobash*

*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
Preciso de ajuda para ver se você pode acelerar um processo , eu tenho que
recolher mails de cerca de 400 máquinas, felizmente, estão em Thunderbird
no formato mbox , mas há muitas caixas de correio que são compartilhados em
muitas das máquinas, por várias razões , nem todos arquivos mbox têm o
mesmo número de e-mails , alguns têm mais outros têm menos , e muitos são
repetidas.
Estou usando SED , para que em todas as pastas , as mensagens permanecem
marcadas como não lidas . Então é mais fácil de trabalhar , eu acho.
O que usamos agora é este script que recorre todas as pastas dentro MAIL
*find * -type f > fitxersmbl; *
*cat fitxersmbl | sed
'/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' > fitxersmbl-net; *
*while read line; *
* do IFS='.' read lastname <<< $line; *
* echo "$lastname";*
*sed -i'.old' 's/Mozilla-Status: 0001/Mozilla-Status: 0000/g;*
*s/Mozilla-Status: 0003/Mozilla-Status: 0002/g;*
*s/Mozilla-Status: 0005/Mozilla-Status: 0004/g;*
*s/Mozilla-Status: 0009/Mozilla-Status: 0008/g;*
*s/Mozilla-Status: 0011/Mozilla-Status: 0010/g;*
*s/Mozilla-Status: 0021/Mozilla-Status: 0020/g;*
*s/Mozilla-Status: 0081/Mozilla-Status: 0080/g;*
*s/Mozilla-Status: 0101/Mozilla-Status: 0100/g;*
*s/Mozilla-Status: 0201/Mozilla-Status: 0200/g;*
*s/Mozilla-Status: 0401/Mozilla-Status: 0400/g;*
*s/Mozilla-Status: 0801/Mozilla-Status: 0800/g;*
*s/Mozilla-Status: 1001/Mozilla-Status: 1000/g;*
*s/Mozilla-Status: E001/Mozilla-Status: E000/g;*
*s/Mozilla-Status: 0013/Mozilla-Status: 0012/g;*
*s/Mozilla-Status: 0023/Mozilla-Status: 0022/g;*
*s/Mozilla-Status: 0083/Mozilla-Status: 0082/g;*
*s/Mozilla-Status: 0103/Mozilla-Status: 0102/g;*
*s/Mozilla-Status: 0203/Mozilla-Status: 0202/g;*
*s/Mozilla-Status: 0403/Mozilla-Status: 0402/g;*
*s/Mozilla-Status: 0803/Mozilla-Status: 0802/g;*
*s/Mozilla-Status: 1003/Mozilla-Status: 1002/g;*
*s/Mozilla-Status: E003/Mozilla-Status: E002/g;*
*s/Mozilla-Status: 0015/Mozilla-Status: 0014/g;*
*s/Mozilla-Status: 0025/Mozilla-Status: 0024/g;*
*s/Mozilla-Status: 0085/Mozilla-Status: 0084/g;*
*s/Mozilla-Status: 0105/Mozilla-Status: 0104/g;*
*s/Mozilla-Status: 0205/Mozilla-Status: 0204/g;*
*s/Mozilla-Status: 0405/Mozilla-Status: 0404/g;*
*s/Mozilla-Status: 0805/Mozilla-Status: 0804/g;*
*s/Mozilla-Status: 1005/Mozilla-Status: 1004/g;*
*s/Mozilla-Status: E005/Mozilla-Status: E004/g;*
*s/Mozilla-Status: 0019/Mozilla-Status: 0018/g;*
*s/Mozilla-Status: 0029/Mozilla-Status: 0028/g;*
*s/Mozilla-Status: 0089/Mozilla-Status: 0088/g;*
*s/Mozilla-Status: 0109/Mozilla-Status: 0108/g;*
*s/Mozilla-Status: 0209/Mozilla-Status: 0208/g;*
*s/Mozilla-Status: 0409/Mozilla-Status: 0408/g;*
*s/Mozilla-Status: 0809/Mozilla-Status: 0808/g;*
*s/Mozilla-Status: 1009/Mozilla-Status: 1008/g;*
*s/Mozilla-Status: 1011/Mozilla-Status: 1010/g;*
*s/Mozilla-Status: E009/Mozilla-Status: E008/g' *
*"$lastname"; *
*done < fitxersmbl-net*
Funciona, mas é muito lento , você vê que faz a mesma operação várias
vezes.
Thunderbird utiliza o último dígito para marcar o e-mail como se ela foi
lida ou não, você pode perceber que o que eu faço é subtrair 1 dos números
ímpares , 1-3-5-9 e manter os três primeiros dígitos do seu valor. Eu não
ver como fazer subtração, dependendo se o número for ímpar.
Muito obrigado
--
Pere
<http://www.imatge.com/>
------------------------------------
AVIS LEGAL
Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de Europea
i altres estats, Si VostÚ el rep per error o sense ser una de les persones
esmenades a la capçalera, haurà de destruir-lo sense copiar-lo ni
revelar-l'ho o qualsevol altre acció relacionada amb el contingut del
missatge i notificar-ho per correu electrònic a l'emissor del missatge.
Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota l'empar de
la legislació civil, penal i administrativa nacional i internacional.
Gracies per la seva cooperació.
------------------------------------
LEGAL NOTICE
Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other territories.
if you are not one of the intended recipients of the message, you are
legally obliged to delete the message content. Furthermore, you are kindly
requested to report immediately the incident to the sender.
Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.
Thank you for your cooperation.
[As partes desta mensagem que não continham texto foram removidas]
Gmail t.collons@gmail.com [shell-script]
2016-09-18 14:27:58 UTC
Permalink
Obrigado Julio e Itamar


Na segunda-feira, vou fazer o teste, e eu vou comentar.



Pere

***@gmail.com <mailto:***@gmail.com>



<http://www.imatge.com/>

------------------------------------

AVIS LEGAL

Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea i altres estats, Si VostÚ el rep per error o sense ser una de
les persones esmenades a la capçalera, haurà de destruir-lo sense
copiar-lo ni revelar-l'ho o qualsevol altre acció relacionada amb el
contingut del missatge i notificar-ho per correu electrònic a l'emissor
del missatge.

Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota l'empar
de la legislació civil, penal i administrativa nacional i internacional.

Gracies per la seva cooperació.

------------------------------------

LEGAL NOTICE

Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories. if you are not one of the intended recipients of the
message, you are legally obliged to delete the message content.
Furthermore, you are kindly requested to report immediately the incident
to the sender.

Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.

Thank you for your cooperation.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Hola Pere,
estou no mobile, então não tenho como testar, nem ver se é mais rápido, mas
se todas as linhas de fitxersmbl-net forem iguais a essas que vc mandou, tente
$ Sai=$(sed -r 's/(.*)([0-9]{4})/printf \"\1%04d\\n"
$((\2-1))/' fitxersmbl-net); eval "$Sai"
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
[shell-script] <
Post by Gmail ***@gmail.com [shell-script]
Preciso de ajuda para ver se você pode acelerar um processo , eu
tenho que
Post by Gmail ***@gmail.com [shell-script]
recolher mails de cerca de 400 máquinas, felizmente, estão em
Thunderbird
Post by Gmail ***@gmail.com [shell-script]
no formato mbox , mas há muitas caixas de correio que são
compartilhados em
Post by Gmail ***@gmail.com [shell-script]
muitas das máquinas, por várias razões , nem todos arquivos mbox têm o
mesmo número de e-mails , alguns têm mais outros têm menos , e
muitos são
Post by Gmail ***@gmail.com [shell-script]
repetidas.
Estou usando SED , para que em todas as pastas , as mensagens permanecem
marcadas como não lidas . Então é mais fácil de trabalhar , eu acho.
O que usamos agora é este script que recorre todas as pastas dentro MAIL
*find * -type f > fitxersmbl; *
*cat fitxersmbl | sed
'/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' >
fitxersmbl-net; *
Post by Gmail ***@gmail.com [shell-script]
*while read line; *
* do IFS='.' read lastname <<< $line; *
* echo "$lastname";*
*sed -i'.old' 's/Mozilla-Status: 0001/Mozilla-Status: 0000/g;*
*s/Mozilla-Status: 0003/Mozilla-Status: 0002/g;*
*s/Mozilla-Status: 0005/Mozilla-Status: 0004/g;*
*s/Mozilla-Status: 0009/Mozilla-Status: 0008/g;*
*s/Mozilla-Status: 0011/Mozilla-Status: 0010/g;*
*s/Mozilla-Status: 0021/Mozilla-Status: 0020/g;*
*s/Mozilla-Status: 0081/Mozilla-Status: 0080/g;*
*s/Mozilla-Status: 0101/Mozilla-Status: 0100/g;*
*s/Mozilla-Status: 0201/Mozilla-Status: 0200/g;*
*s/Mozilla-Status: 0401/Mozilla-Status: 0400/g;*
*s/Mozilla-Status: 0801/Mozilla-Status: 0800/g;*
*s/Mozilla-Status: 1001/Mozilla-Status: 1000/g;*
*s/Mozilla-Status: E001/Mozilla-Status: E000/g;*
*s/Mozilla-Status: 0013/Mozilla-Status: 0012/g;*
*s/Mozilla-Status: 0023/Mozilla-Status: 0022/g;*
*s/Mozilla-Status: 0083/Mozilla-Status: 0082/g;*
*s/Mozilla-Status: 0103/Mozilla-Status: 0102/g;*
*s/Mozilla-Status: 0203/Mozilla-Status: 0202/g;*
*s/Mozilla-Status: 0403/Mozilla-Status: 0402/g;*
*s/Mozilla-Status: 0803/Mozilla-Status: 0802/g;*
*s/Mozilla-Status: 1003/Mozilla-Status: 1002/g;*
*s/Mozilla-Status: E003/Mozilla-Status: E002/g;*
*s/Mozilla-Status: 0015/Mozilla-Status: 0014/g;*
*s/Mozilla-Status: 0025/Mozilla-Status: 0024/g;*
*s/Mozilla-Status: 0085/Mozilla-Status: 0084/g;*
*s/Mozilla-Status: 0105/Mozilla-Status: 0104/g;*
*s/Mozilla-Status: 0205/Mozilla-Status: 0204/g;*
*s/Mozilla-Status: 0405/Mozilla-Status: 0404/g;*
*s/Mozilla-Status: 0805/Mozilla-Status: 0804/g;*
*s/Mozilla-Status: 1005/Mozilla-Status: 1004/g;*
*s/Mozilla-Status: E005/Mozilla-Status: E004/g;*
*s/Mozilla-Status: 0019/Mozilla-Status: 0018/g;*
*s/Mozilla-Status: 0029/Mozilla-Status: 0028/g;*
*s/Mozilla-Status: 0089/Mozilla-Status: 0088/g;*
*s/Mozilla-Status: 0109/Mozilla-Status: 0108/g;*
*s/Mozilla-Status: 0209/Mozilla-Status: 0208/g;*
*s/Mozilla-Status: 0409/Mozilla-Status: 0408/g;*
*s/Mozilla-Status: 0809/Mozilla-Status: 0808/g;*
*s/Mozilla-Status: 1009/Mozilla-Status: 1008/g;*
*s/Mozilla-Status: 1011/Mozilla-Status: 1010/g;*
*s/Mozilla-Status: E009/Mozilla-Status: E008/g' *
*"$lastname"; *
*done < fitxersmbl-net*
Funciona, mas é muito lento , você vê que faz a mesma operação várias
vezes.
Thunderbird utiliza o último dígito para marcar o e-mail como se ela foi
lida ou não, você pode perceber que o que eu faço é subtrair 1 dos
números
Post by Gmail ***@gmail.com [shell-script]
ímpares , 1-3-5-9 e manter os três primeiros dígitos do seu valor.
Eu não
Post by Gmail ***@gmail.com [shell-script]
ver como fazer subtração, dependendo se o número for ímpar.
Muito obrigado
--
Pere
<http://www.imatge.com/>
------------------------------------
AVIS LEGAL
Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea
Post by Gmail ***@gmail.com [shell-script]
i altres estats, Si VostÚ el rep per error o sense ser una de les
persones
Post by Gmail ***@gmail.com [shell-script]
esmenades a la capçalera, haurà de destruir-lo sense copiar-lo ni
revelar-l'ho o qualsevol altre acció relacionada amb el contingut del
missatge i notificar-ho per correu electrònic a l'emissor del missatge.
Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota
l'empar de
Post by Gmail ***@gmail.com [shell-script]
la legislació civil, penal i administrativa nacional i internacional.
Gracies per la seva cooperació.
------------------------------------
LEGAL NOTICE
Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories.
Post by Gmail ***@gmail.com [shell-script]
if you are not one of the intended recipients of the message, you are
legally obliged to delete the message content. Furthermore, you are
kindly
Post by Gmail ***@gmail.com [shell-script]
requested to report immediately the incident to the sender.
Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.
Thank you for your cooperation.
[As partes desta mensagem que não continham texto foram removidas]
Gmail t.collons@gmail.com [shell-script]
2016-09-19 15:01:14 UTC
Permalink
Caros Itamar, Júlio e lista


Finalmente o Script , foi como se segue :

*
*

*#!/bin/bash

find * -type f | sed
'/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.rar/d;/.zip/d;/~/d;/.com$/d'
| while IFS='.' read lastname; do
echo "$lastname";
sed -i'.old' 's/Mozilla-Status:
\([E01][01248][0128]\)1/Mozilla-Status: \10/g;s/Mozilla-Status:
\([E01][01248][0128]\)3/Mozilla-Status: \12/g;s/Mozilla-Status:
\([E01][01248][0128]\)5/Mozilla-Status: \14/g;s/Mozilla-Status:
\([E01][01248][0128]\)7/Mozilla-Status: \16/g;s/Mozilla-Status:
\([E01][01248][0128]\)9/Mozilla-Status: \18/g;' "$lastname";
done *


Obrigado a todos pela ajuda

Salutacions.

Pere

***@gmail.com <mailto:***@gmail.com>



<http://www.imatge.com/>

------------------------------------

AVIS LEGAL

Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea i altres estats, Si VostÚ el rep per error o sense ser una de
les persones esmenades a la capçalera, haurà de destruir-lo sense
copiar-lo ni revelar-l'ho o qualsevol altre acció relacionada amb el
contingut del missatge i notificar-ho per correu electrònic a l'emissor
del missatge.

Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota l'empar
de la legislació civil, penal i administrativa nacional i internacional.

Gracies per la seva cooperació.

------------------------------------

LEGAL NOTICE

Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories. if you are not one of the intended recipients of the
message, you are legally obliged to delete the message content.
Furthermore, you are kindly requested to report immediately the incident
to the sender.

Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.

Thank you for your cooperation.
Post by 'Julio C. Neves' ***@gmail.com [shell-script]
Hola Pere,
estou no mobile, então não tenho como testar, nem ver se é mais rápido, mas
se todas as linhas de fitxersmbl-net forem iguais a essas que vc mandou, tente
$ Sai=$(sed -r 's/(.*)([0-9]{4})/printf \"\1%04d\\n"
$((\2-1))/' fitxersmbl-net); eval "$Sai"
Abcs,
Julio
*Próximos cursos de Shell*
*Cidade Local Período*
*​*
*São Paulo 4Linux
<https://www.4linux.com.br/curso/programacao-em-shell-script> 05-09/12*
Dou treinamento de *Shell* em qualquer cidade.
[shell-script] <
Post by Gmail ***@gmail.com [shell-script]
Preciso de ajuda para ver se você pode acelerar um processo , eu
tenho que
Post by Gmail ***@gmail.com [shell-script]
recolher mails de cerca de 400 máquinas, felizmente, estão em
Thunderbird
Post by Gmail ***@gmail.com [shell-script]
no formato mbox , mas há muitas caixas de correio que são
compartilhados em
Post by Gmail ***@gmail.com [shell-script]
muitas das máquinas, por várias razões , nem todos arquivos mbox têm o
mesmo número de e-mails , alguns têm mais outros têm menos , e
muitos são
Post by Gmail ***@gmail.com [shell-script]
repetidas.
Estou usando SED , para que em todas as pastas , as mensagens permanecem
marcadas como não lidas . Então é mais fácil de trabalhar , eu acho.
O que usamos agora é este script que recorre todas as pastas dentro MAIL
*find * -type f > fitxersmbl; *
*cat fitxersmbl | sed
'/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' >
fitxersmbl-net; *
Post by Gmail ***@gmail.com [shell-script]
*while read line; *
* do IFS='.' read lastname <<< $line; *
* echo "$lastname";*
*sed -i'.old' 's/Mozilla-Status: 0001/Mozilla-Status: 0000/g;*
*s/Mozilla-Status: 0003/Mozilla-Status: 0002/g;*
*s/Mozilla-Status: 0005/Mozilla-Status: 0004/g;*
*s/Mozilla-Status: 0009/Mozilla-Status: 0008/g;*
*s/Mozilla-Status: 0011/Mozilla-Status: 0010/g;*
*s/Mozilla-Status: 0021/Mozilla-Status: 0020/g;*
*s/Mozilla-Status: 0081/Mozilla-Status: 0080/g;*
*s/Mozilla-Status: 0101/Mozilla-Status: 0100/g;*
*s/Mozilla-Status: 0201/Mozilla-Status: 0200/g;*
*s/Mozilla-Status: 0401/Mozilla-Status: 0400/g;*
*s/Mozilla-Status: 0801/Mozilla-Status: 0800/g;*
*s/Mozilla-Status: 1001/Mozilla-Status: 1000/g;*
*s/Mozilla-Status: E001/Mozilla-Status: E000/g;*
*s/Mozilla-Status: 0013/Mozilla-Status: 0012/g;*
*s/Mozilla-Status: 0023/Mozilla-Status: 0022/g;*
*s/Mozilla-Status: 0083/Mozilla-Status: 0082/g;*
*s/Mozilla-Status: 0103/Mozilla-Status: 0102/g;*
*s/Mozilla-Status: 0203/Mozilla-Status: 0202/g;*
*s/Mozilla-Status: 0403/Mozilla-Status: 0402/g;*
*s/Mozilla-Status: 0803/Mozilla-Status: 0802/g;*
*s/Mozilla-Status: 1003/Mozilla-Status: 1002/g;*
*s/Mozilla-Status: E003/Mozilla-Status: E002/g;*
*s/Mozilla-Status: 0015/Mozilla-Status: 0014/g;*
*s/Mozilla-Status: 0025/Mozilla-Status: 0024/g;*
*s/Mozilla-Status: 0085/Mozilla-Status: 0084/g;*
*s/Mozilla-Status: 0105/Mozilla-Status: 0104/g;*
*s/Mozilla-Status: 0205/Mozilla-Status: 0204/g;*
*s/Mozilla-Status: 0405/Mozilla-Status: 0404/g;*
*s/Mozilla-Status: 0805/Mozilla-Status: 0804/g;*
*s/Mozilla-Status: 1005/Mozilla-Status: 1004/g;*
*s/Mozilla-Status: E005/Mozilla-Status: E004/g;*
*s/Mozilla-Status: 0019/Mozilla-Status: 0018/g;*
*s/Mozilla-Status: 0029/Mozilla-Status: 0028/g;*
*s/Mozilla-Status: 0089/Mozilla-Status: 0088/g;*
*s/Mozilla-Status: 0109/Mozilla-Status: 0108/g;*
*s/Mozilla-Status: 0209/Mozilla-Status: 0208/g;*
*s/Mozilla-Status: 0409/Mozilla-Status: 0408/g;*
*s/Mozilla-Status: 0809/Mozilla-Status: 0808/g;*
*s/Mozilla-Status: 1009/Mozilla-Status: 1008/g;*
*s/Mozilla-Status: 1011/Mozilla-Status: 1010/g;*
*s/Mozilla-Status: E009/Mozilla-Status: E008/g' *
*"$lastname"; *
*done < fitxersmbl-net*
Funciona, mas é muito lento , você vê que faz a mesma operação várias
vezes.
Thunderbird utiliza o último dígito para marcar o e-mail como se ela foi
lida ou não, você pode perceber que o que eu faço é subtrair 1 dos
números
Post by Gmail ***@gmail.com [shell-script]
ímpares , 1-3-5-9 e manter os três primeiros dígitos do seu valor.
Eu não
Post by Gmail ***@gmail.com [shell-script]
ver como fazer subtração, dependendo se o número for ímpar.
Muito obrigado
--
Pere
<http://www.imatge.com/>
------------------------------------
AVIS LEGAL
Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea
Post by Gmail ***@gmail.com [shell-script]
i altres estats, Si VostÚ el rep per error o sense ser una de les
persones
Post by Gmail ***@gmail.com [shell-script]
esmenades a la capçalera, haurà de destruir-lo sense copiar-lo ni
revelar-l'ho o qualsevol altre acció relacionada amb el contingut del
missatge i notificar-ho per correu electrònic a l'emissor del missatge.
Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota
l'empar de
Post by Gmail ***@gmail.com [shell-script]
la legislació civil, penal i administrativa nacional i internacional.
Gracies per la seva cooperació.
------------------------------------
LEGAL NOTICE
Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories.
Post by Gmail ***@gmail.com [shell-script]
if you are not one of the intended recipients of the message, you are
legally obliged to delete the message content. Furthermore, you are
kindly
Post by Gmail ***@gmail.com [shell-script]
requested to report immediately the incident to the sender.
Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.
Thank you for your cooperation.
[As partes desta mensagem que não continham texto foram removidas]
itamarnet@yahoo.com.br [shell-script]
2016-09-18 01:08:18 UTC
Permalink
Caro amigo

Acredito que a linha:

while read line;
do IFS='.' read lastname <<< $line;

possa ser melhorada, inclusive o grande mestre Júlio de uma sugestão que vai de encontro a esse caso numa thread recente. Tenho certeza que poderia adaptar ao seu caso e melhorar a performace.

Os trecho do sed com essa característica e da subtração que citou, poderia mudar desse formato:
s/Mozilla-Status: 0001/Mozilla-Status: 0000/g;
para algo assim:

s/Mozilla-Status: \([E0-9][0-9][0-9]\)1/Mozilla-Status: \10/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)3/Mozilla-Status: \12/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)5/Mozilla-Status: \14/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)7/Mozilla-Status: \16/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)9/Mozilla-Status: \18/g;

Que cobriria todas as possibilidades:

Obs.:
Na regex coloquei uma lista [E0-9] pois vi a ocorrência do caracter 'E', e isso me levanta suspeita que posse ser um formato hexadecimal, e se for seria melhor trocar por [A-F0-9].

Mas analisando o que foi passado no script original e pelas ocorrências do caracteres, a regex poderia se restringir no grupo a:
\([E0-9][01248][0128]\)
e a linha:
s/Mozilla-Status: \([E0-9][0-9][0-9]\)7/Mozilla-Status: \16/g
poderia ser dispensada pois não aparece nenhum que termina com 7


Isso ajuda?

[]'s
Itamar
Gmail t.collons@gmail.com [shell-script]
2016-09-18 19:17:32 UTC
Permalink
Caro Itamar


Estou testeando em minha casa, a opção de você, e a opção de Mestre
Júlio, e eu tenho que dizer que o seu é mais rápido, aproximadamente 50%
a mais do que a opção que tenho. E infinitamente mais do que a opção do
Mestre Júlio.

Aqui eu mostro tempos de execução mais de mil e-mails


*############################ --------------- Júlio
real 10m47.208s
user 9m49.052s
sys 0m9.936s
bash: fork: No s’ha pogut reservar memòria /(/**/Não foi possível alocar
memória)/

############################ --------------- Itamar
real 1m32.478s
user 0m52.092s
sys 0m29.392s


############################ --------------- Pere
real 2m30.959s
user 1m45.000s
sys 0m29.804s
*


Pere

***@gmail.com <mailto:***@gmail.com>



<http://www.imatge.com/>

------------------------------------

AVIS LEGAL

Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea i altres estats, Si VostÚ el rep per error o sense ser una de
les persones esmenades a la capçalera, haurà de destruir-lo sense
copiar-lo ni revelar-l'ho o qualsevol altre acció relacionada amb el
contingut del missatge i notificar-ho per correu electrònic a l'emissor
del missatge.

Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota l'empar
de la legislació civil, penal i administrativa nacional i internacional.

Gracies per la seva cooperació.

------------------------------------

LEGAL NOTICE

Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories. if you are not one of the intended recipients of the
message, you are legally obliged to delete the message content.
Furthermore, you are kindly requested to report immediately the incident
to the sender.

Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.

Thank you for your cooperation.
Post by ***@yahoo.com.br [shell-script]
Caro amigo
*while read line; **
** do IFS='.' read lastname <<< $line; **
*
possa ser melhorada, inclusive o grande mestre Júlio de uma sugestão
que vai de encontro a esse caso numa thread recente. Tenho certeza que
poderia adaptar ao seu caso e melhorar a performace.
Os trecho do sed com essa característica e da subtração que citou,
*s/Mozilla-Status: 0001/Mozilla-Status: 0000/g;*
s/Mozilla-Status: \([E0-9][0-9][0-9]\)1/Mozilla-Status: \10/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)3/Mozilla-Status: \12/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)5/Mozilla-Status: \14/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)7/Mozilla-Status: \16/g;
s/Mozilla-Status: \([E0-9][0-9][0-9]\)9/Mozilla-Status: \18/g;
Na regex coloquei uma lista [E0-9] pois vi a ocorrência do caracter
'E', e isso me levanta suspeita que posse ser um formato hexadecimal,
e se for seria melhor trocar por [A-F0-9].
Mas analisando o que foi passado no script original e pelas
\([E0-9][01248][0128]\)
s/Mozilla-Status: \([E0-9][0-9][0-9]\)7/Mozilla-Status: \16/g
poderia ser dispensada pois não aparece nenhum que termina com 7
Isso ajuda?
[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2016-09-18 21:28:40 UTC
Permalink
Caro amigo Pere

Como mestre Júlio comentou ele estava num aparelho mobile e eu no meu micro e pude fazer um teste melhor com um exemplo.
Mas como comentei antes o Júlio já havia comentado algo parecido na forma como fazer o laço while em outra thread, mas seria algo como trocar
while read line;
do IFS='.' read lastname <<< $line;

por:
while IFS='.' read lastname
do

Nesse caso elimina o uso da variável $line


Mas outro ponto que poderia considerar era trocar:
find * -type f > fitxersmbl;
cat fitxersmbl | sed '/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' > fitxersmbl-net;

por :

find * -type f | sed '/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' > fitxersmbl-net;

E assim nem preciso do arquivo "fitxersmbl"


E se não precisar do arquivo "fitxersmbl-net", poderia ligar tudo através de pipe:

find * -type f |
sed '/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d' |
while IFS='.' read lastname
do
echo *$lastname*;
*** trecho do sed ***
done


Obs.:
O uso de IFS='.' me intriga para esse caso de uso, pois imagino que pode haver problemas com arquivos com ponto no nome. Todavia como usa a variável $lastname, junto com asteriscos(*$lastname*), isso deve contornar o problema, entretando e se a variável $lastname repetir mais de uma vez?
Vai haver um processamento repetido e desnecessário eu acredito, que pode impactar na velocidade. Mas como não sei exatamente a estrutura, considere essa observação menos relevante.


[]'s
Itamar
itamarnet@yahoo.com.br [shell-script]
2016-09-18 21:42:15 UTC
Permalink
Pere

outro ponto que esqueci de comentar é sobre o primeiro sed:
sed '/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d'

Não seria algo a ser considerado assim:
sed '/\.msf/d;/\.dirinfo/d;/\.html/d;/\.dat/d;/\.tar/d;/.com$/d'

onde o ideal seria escapar os pontos( \.), se não pode ser qualquer caractere.
E não quis colocar no exemplo acima, mas não é o caso de casa regex ter o cifrão ao final, como fez no último? Ou a extensão colocada na regex não são fim da linha e pdem ocorrer no meio, exempo: ".tar" pode estar filtrando e apagando ".tar", ".tar.gz" e ".tar.xz"?

[]'s
Itamar
Gmail t.collons@gmail.com [shell-script]
2016-09-18 22:39:06 UTC
Permalink
Caro Itamar

Nas pastas onde eu tenho que olhar, eu tenho apenas para capturar
arquivos que não têm extensões, que são o Thunderbird mbox é por isso,
retire as possíveis ocorrências de arquivos indesejados, mas como pode
ocorrer em qualquer pasta há alguém para criar um arquivo separado com
qualquer extensão eu não uso ". *".

Obrigado por suas respostas.


Pere

***@gmail.com <mailto:***@gmail.com>



<http://www.imatge.com/>

------------------------------------

AVIS LEGAL

Nota de confidencialitat: Aquest missatge podria contenir missatges
d'empresa i altre informació confidencial tutelada per les lleis de
Europea i altres estats, Si VostÚ el rep per error o sense ser una de
les persones esmenades a la capçalera, haurà de destruir-lo sense
copiar-lo ni revelar-l'ho o qualsevol altre acció relacionada amb el
contingut del missatge i notificar-ho per correu electrònic a l'emissor
del missatge.

Les persones o entitats que incompleixin els deures de confidencialitat
podran ésser perseguides davant dels Tribunals de Justícia sota l'empar
de la legislació civil, penal i administrativa nacional i internacional.

Gracies per la seva cooperació.

------------------------------------

LEGAL NOTICE

Confidentiality notice: This mail may include business and other
confidential information protected under the laws of and other
territories. if you are not one of the intended recipients of the
message, you are legally obliged to delete the message content.
Furthermore, you are kindly requested to report immediately the incident
to the sender.

Breach of confidentiality duties is a serious criminal offence in and
other territories. Offenders shall be legally prosecuted worldwide.

Thank you for your cooperation.
Post by ***@yahoo.com.br [shell-script]
Pere
sed '/.msf/d;/.dirinfo/d;/.html/d;/.dat/d;/.tar/d;/.com$/d'
sed '/\.msf/d;/\.dirinfo/d;/\.html/d;/\.dat/d;/\.tar/d;/.com$/d'
onde o ideal seria escapar os pontos( \.), se não pode ser qualquer caractere.
E não quis colocar no exemplo acima, mas não é o caso de casa regex
ter o cifrão ao final, como fez no último? Ou a extensão colocada na
regex não são fim da linha e pdem ocorrer no meio, exempo: ".tar" pode
estar filtrando e apagando ".tar", ".tar.gz" e ".tar.xz"?
[]'s
Itamar
Loading...