fabien29200 Posté(e) le 6 novembre 2008 Partager Posté(e) le 6 novembre 2008 Hello ! Si vous utilisez GMail, vous avez peut être déjà reçu une pièce jointe intitulée "noname" et dont le contenu vous a laissé perplexe. Il s'agit apparemment d'un bug connu entre GMail et le logiciel de mails sous MacOS. Mon chef utilisant un Mac et utilisant GMail, je soumis quotidiennement à ce problème. J'ai écrit un petit script sans prétention qui extrait la pièce jointe du fichier noname. Je ne l'ai testé que sur un seul fichier (GMail a du mal à considérer ces mails comme ayant des pièces jointes), donc si d'autres personnes pouvaient le tester ou même l'améliorer, ça serait bien Le script : #!/bin/bash eval export `grep -m 1 filename noname` linesNumber=`wc -l noname | awk '{print $1}'` lastLineOfFile=$((linesNumber-2)) firstLineOfFile=$((linesNumber-28)) head -n $lastLineOfFile noname | tail -n $firstLineOfFile > noname.tmp openssl enc -d -base64 -in noname.tmp -out "$filename" rm noname.tmp A bientôt ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 6 novembre 2008 Partager Posté(e) le 6 novembre 2008 Pourquoi passer par (fin du fichier -2 -((fin du fichier)-28) et non pas 26e ligne directement ? Pas testé, mais #!/bin/bash eval export `grep -m 1 filename noname` perl -e '@l=<>; print @l[26..$#l-2]' noname openssl enc -d -base64 -in noname.tmp -out "$filename" rm noname.tmp devrait fonctionner. Sinon je n'ai pas compris l'intérêt du grep Lien vers le commentaire Partager sur d’autres sites More sharing options...
fabien29200 Posté(e) le 6 novembre 2008 Auteur Partager Posté(e) le 6 novembre 2008 Je suis passé par "head | tail" parce que je ne voyais pas d'autre moyen pour éliminer les x premières lignes et les y dernières lignes autrement. Je ne connais pas perl, donc ta solution ne m'est pas venue à l'idée Pour le grep, il faut un fichier sous la main. En fait, le nom de la pièce jointe est contenue dans le fichier sous la filename="xyz" Donc en lançant export devant cette ligne, on met tout seul le nom de fichier dans la variable filename réutilisée à la fin pour nommer le fichier final. Merci de tes conseils ! Lien vers le commentaire Partager sur d’autres sites More sharing options...
theocrite Posté(e) le 6 novembre 2008 Partager Posté(e) le 6 novembre 2008 Je suis passé par "head | tail" parce que je ne voyais pas d'autre moyen pour éliminer les x premières lignes et les y dernières lignes autrement.Je ne connais pas perl, donc ta solution ne m'est pas venue à l'idée Ben en fait je suis passé par perl parce que je ne me souvenais plus comment le faire en perl Un truc du genre sed -n 26,???p noname aurait été plus compréhensible, mais je suis rouillé en sed. Pour le grep, il faut un fichier sous la main. En fait, le nom de la pièce jointe est contenue dans le fichier sous la filename="xyz"Donc en lançant export devant cette ligne, on met tout seul le nom de fichier dans la variable filename réutilisée à la fin pour nommer le fichier final. Ah dans ce cas, on peut cradifier un peu : #!/bin/bash perl -e '@l=<>; print @l[26..$#l-2]' noname > noname.tmp openssl enc -d -base64 -in noname.tmp -out $(grep -m 1 filename noname | cut -d= -f2) rm noname.tmp On peut même faire ça en une ligne si jamais openssl accepte les arguments via le pipe (avec un "| openssl [...] -in - [...]"par exemple). Merci de tes conseils ! À ton service (enfin ce n'est qu'une ligne de perl en fait ^^) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.