tri adresse mail selon extension pays

Est ce que ca pose un probleme d utiliser "cat * | /Users/xxx/Desktop/tversion2.pl" au lieu de ton "sh t.sh" ?
Non, s'il n'y a que les fichiers à traiter dans le répertoire courant.
Sinon, il faut trouver un moyen de faire la distinction entre les fichiers en entrée et les autres. Comme j'avais tout dans un même répertoire, je renommais le fichier en entrée avec un extension ".data" qui le distinguait des fichiers résultats (".txt"), de mon script (".pl"). En cas d'erreur de mon script, je pouvais faire "rm *.txt" avant de recommencer.

Pour les performances, tu as donc environ 02:30 pour 2 gigas, soit 01:15 par giga.
La commande "time" te donne des informations plus précises :
$ cat listemails.data | time ./t.pl
0,05 real 0,00 user 0,03 sys
real est le temps elapse pour l'utilisateur
user est le temps CPU en mode user
sys est le temps CPU en mode système (temps d'exécution des appels systèmes)

Bonne chance et prépare toi 2 ou 3 thermos de café ...
 
  • J’aime
Réactions: francois_francois
Bonjour

Un petit souci avec le terminal.
le script "tversion2.pl" donné par jcezanna54 fonctionnait a merveille.

J'ai utilisé une application "cool menu", qui permet de faire des operations d'entretien du systeme. J'ai vidé le cache de "je ne souviens plus de quoi!"

Depuis le script se lance bien, mais plus rien ne se passe (aucun pays extrait).
les pays ne sont plus extrait du fichier .txt

J'ai redemarré le mac, zapper la PRAM. Toujours pareil.

Une idée ????

Merci
 

Fichiers joints

  • cccccccc.png
    cccccccc.png
    160,1 KB · Affichages: 44
Bonjour,
@francois_francois

Afin de voir d'où peut provenir le problème je ferais quelques tests
  • Essai d'une commande ordinaire dans le terminal
  • Essai d'un script shell
  • Essai d'un autre script perl
  • Essai du script dans une autre session
  • Et essayer tous ces même tests dans une autre session
 
@love_leeloo
c'est un meu deroulant tu selectionne les actions a faire. J'ai fais :
  • free disk pace / Applications caches
  • free disk pace / Applications logs
  • free disk pace / Partial download

afin de recupérer de la place que mon SSD.
 
Bonjour,
@francois_francois

Afin de voir d'où peut provenir le problème je ferais quelques tests
  • Essai d'une commande ordinaire dans le terminal
  • Essai d'un script shell
  • Essai d'un autre script perl
  • Essai du script dans une autre session
  • Et essayer tous ces même tests dans une autre session
Bonjour

je viens de reinstaller Perl.
Tous fonctionne bien pour l'installation

zzzzzz.png
 
@zeltron54
je viens d'essayer ce script ca marche nickel

#!/bin/bash
for file in *.txt
do
echo "Traitement de $file ..."
sed -i -e "s/;/:/g" "$file"
done


J'ai essayé aussi ce script perl qui fonctionne bien aussi.
#!/usr/bin/perl
# Affiche une table de multiplication.
use strict;
use warnings;

my $nb; # Le nombre dont on veut afficher la table.

# Teste si on a passe le nombre en parametre, sinon le demande.
if ($ARGV[0]) {
$nb = $ARGV[0];
}
else {
print "Quelle table de multiplication voulez-vous afficher ? ";
$nb = <>;
}

# On supprime le saut de ligne pour l'affichage
chomp $nb;
# On vérifie que $nb est bien une valeur numérique (on autorise les nb negatifs et a virgule).
if (!($nb =~ /^(\-)?\d+(\.\d*)?+$/)) { die 'Erreur : "' . $nb . '"' . " n'est pas un nombre.\n"; }

# On affiche la table
for(my $i = 1; $i <= 10; $i++) {
print "$nb x $i = " . $nb * $i . "\n";
}
 
Dernière édition:
Bonjour,

Ton script fonctionne ! mais il faut l'appeler en luis donnant le nom du fichier à traiter !

1) faire CD le dossier ou se trouve le fichier
2) cat ./testemail.txt | ./tversion2.pl

Les fichiers résultats sont dans le même dossier que le fichier original.
Afin d'éviter une confusion, il serait souhaitable de renommer le fichier original à traiter en ".data" au lieu de ".txt" qui est aussi l'extension des fichiers résultats.
 
Bonjour,

Si cela peut t'aider, je peux te créer un petit applescript, à enregistrer comme application, qui te demande de sélectionner le fichier texte à traiter, puis de sélectionner le script perl, puis qui lance le script perl en créant un dossier sur le bureau pour recevoir le résultat du traitement. ?
 
Bonjour

Pour ceux qui ont lu mes précédents messages, je continue de trier des lignes de données dans des fichiers texte.

En piochant des lignes de codes a droite et gauche, j'ai reussi a faire ce script mais ca coince a la ligne 11.
Une histoire de recuperation d'une valeur d'une commande, bref....

Je tatonne depuis un moment, mais je trouve pas la bonne syntaxe.

J'ai un dossier ou se trouve 1 ou plusieurs fichiers .txt dans un dossier (chaque fichier possède obligatoirement "¨Pays" dans son nom)
Je souhaite que si le script detecte au moins 2 fichiers .txt ceux-ci soient concatené avec le nom final.txt, sinon, on passe a l'etape suivante.

Une aide serait la bienvenue. Merci

#!/bin/bash

echo "***********************************************"
echo "nombre de fichiers texte dans le dossier..."
variable=$(ls *.txt | wc -l)
echo "$variable"
echo "==============================================="


sleep 1
if $variable > 1
then
echo "***********************************************"
echo "concatenation des tous fichiers texte du dossier, puis renommage en final.txt..."
cat * > final.txt
echo "==============================================="
else
echo "***********************************************"
echo "pas de concatenation nécéssaire, 1 seul fichier trouvé..."
echo "==============================================="
fi



sleep 1
echo "***********************************************"
echo "suppression dans le dossier des fichiers texte source sauf final.txt..."
rm Pays.txt
echo "==============================================="




sleep 1
echo "***********************************************"
echo "remplace ; par : dans chaque ligne entre email et pass..."
for file in *.txt
do
echo "Traitement de $file ..."
sed -i -e "s/;/:/g" "$file"
done
echo "==============================================="




sleep 1
echo "***********************************************"
echo "Renommage de $file avec _NOdoublon_Nopointvirgule_trie..."
mv final.txt final_NOdoublon_Nopointvirgule_trie.txt
rm final.txt-e
echo "==============================================="



sleep 1
echo "***********************************************"
for file in *.txt
do
echo "Suppression des doublons puis trie de $file ..."
sort -u -o $file $file
done
echo "==============================================="
 
Dernière édition:
Bonjour,

Ta ligne 11
if $variable > 1
devrait être
if test $variable -gt 1
 
  • J’aime
Réactions: francois_francois
@zeltron54

Ca fonctionne bien.

Encore une petite chose, comment retirer le "point d'interrogation" (retour, j'imagine) a la fin de certaines lignes ?
Sinon la suppression des doubles ne fonctionne pas correctement.

mercisssssss.png
 
Dernière édition:
N'ayant pas ton texte et ne sachant pas exactement ce que tu veux obtenir, il est difficile de te dire ...

sed -e s/¿//g

Signifie substitue le caractère ¿ par (rien) sur toute la ligne ...
donc supprime tous les caractères ¿ sur toute la ligne traitée ...
 
  • J’aime
Réactions: francois_francois