tri adresse mail selon extension pays

La commande
sed -i '' -e 's/¿$//' tonfichier

devrait effacer les ¿ qui sont en fin de ligne
-i un espace suivi de deux ' ceci sur mac pour travailler directement dans le fichier.
Fait quelques tests ... :D avant d'appliquer définitif !
 
  • J’aime
Réactions: francois_francois
Je viens de tester, ca ne fonctionne pas tres bien.
Les "¿" sont toujours a la fin des lignes

J'ai modifié la ligne par
sed -i -e "s/¿$//g" "$file"
ca fonctionne, ca ne retire que le ¿ de la fin de ligne (et laisse ceux eventuellement ailleurs).

Merci de ton aide zeltron54 :up:
 
Dernière édition:
Curieux chez moi cela fonctionne que ce soit des " ou des ' pas de différence...
Afin si tout fonctionne ;)
 
  • J’aime
Réactions: francois_francois
Bonjour,

Je viens de retester !
Les 2 formules me donnent exactement le même résultat.

Le but étant que cela fasse le job , alors qu'importe ...
 
  • J’aime
Réactions: francois_francois
Bonjour

Le script qui trie, retire les doublons etc... utilise le disque demarrage pour stocker des fichiers temporaires.
Peut on lui indiquer d'utiliser un disque specifique pour ecrire les fichiers temporaires ? (sinon ca sature mon disque de boot, un SSD de 525 Gigas)

Merci
 
Dernière édition:
Bonjour,

Je ne crois pas trop aux fichiers temporaires (mais je n'ai pas ton script ! ).
Je pencherai plus vers un problème de duplication des fichiers lors du traitement pour enlever les ¿ .

En effet ta formule sed -i -e "s/¿$//g" "$file" duplique le fichier en le renommant xxxx.txt-e, alors que la formule sed -i '' -e 's/¿$//' travaille sur le fichier d'origine (comme déjà dit) sans créer de double.
A vérifier
 
  • J’aime
Réactions: francois_francois
Ceci est vrai sous unix et linux, d'ailleur sous linux il n'y a pas les 2 ' qui suivent le -i
les 2 ' qui suivent le -i est spécifique au mac et permet justement de ne pas créer les fichiers, qui d' ailleurs sur mac ne sont pas temporaires, mais dupliqués.

Fais quelques test avec un fichier texte et passe successivement les 2 commandes dans le terminal tu verras le résultat, le fichier est dupliqué au même endroit que l'original .
 
J'ai changé une partie du script avec

sleep 1
echo "********************************************************"
echo "remplace ; par : dans chaque ligne entre email et pass"
echo "et supprime point interrogation en fin de ligne en trop..."
for file in *.txt
do
echo "=> Traitement de $file ..."
sed -i '' 's/;/:/g' $file
sed -i '' 's/¿$//' $file
done
echo ""

Autre chose,

Comment effacer un fichier nommé "final.txt-e" qui peut etre (ou ne pas etre) present
la commande est :
rm final.txt-e

Le probleme, c'est comment indiqué cette suppression seulement si le ce fichier existe (sinon ca retourne une erreur a l'ecran)
rm: final.txt-e: No such file or directory

merci
 
Dernière édition:
J'ai fait ca :

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

if [ -e final.txt-e ]
then
echo "Mon fichier existe"
rm final.txt-e
else
echo "Mon fichier n'existe pas"
fi

echo ""
 
Pour les 2 ' on en parlait là : https://forums.macg.co/threads/commande-sed-changement-caractere.1310973/ post #8 et #9

Pour effacer tes fichiers "final.txt-e" qui ont donc été créé par la commande sed ;) sans les 2 '
Faire un test pour vérifier si existe:

exemple

Bloc de code:
if [ -e /Users/xxxxxxx/Desktop/final.txt-e.txt ]
then
    echo "Mon fichier existe"
Faire le rm ....
fi

Edit : j'arrive après la bagarre LOL, j'avais pas actualisé la page.
 
Dernière édition:
  • J’aime
Réactions: francois_francois
Merci des retours.

Une question purement esthetique,
Une ligne du script affiche du texte, puis une variable.
Cependant, il y a un grand espace entre la fin du texte, et la variable (alors qu'il n'est pas présent dans la ligne de code).

echo "nombre de fichiers texte dans le dossier... = $variable"

Capture d’écran 2022-09-19 à 09.51.14.png


comment ne pas laisser cet espace vide ?

Merci
 
Bonjour,
Aucune idée !
Je n'arrive pas à reproduire ton problème chez moi. Comment est défini ta variable ?
tu peux éventuellement essayer d'afficher le texte puis la variable , mais j'y crois pas trop !

Bloc de code:
echo "nombre de fichiers texte dans le dossier... =" $variable

Sinon pour le reste cela fonctionne ?
 
  • J’aime
Réactions: francois_francois
@zeltron54

le code
echo "nombre de fichiers texte dans le dossier... =" $variable
fonctionne mieux, ca affiche bien maintenant
nombre de fichiers texte dans le dossier... = 1

Sinon, le script fonctionne très bien.
ca prend du temps c'est tout.

L'extraction des mails par pays, prends 10 jours pour 18 GIGAS de données
 
Dernière édition:
Autre probleme,

Comment fait on pour supprimer tous les fichiers texte d'un dossier, sauf 1 en particulier (contient le mot "final") ?

Merci

J'ai ca mais evidement ca fait pas exactement la boulot
sleep 1
if [ -e Pays.txt ]
then
echo "********************************************************"
echo "suppression dans le dossier des fichiers texte source sauf final.txt..."
rm Pays.txt
else
echo "pas de suppression de Pays.txt car non existant..."
echo ""
fi
 
Peut être en faisant un test pour vérifier si c'es tun ".txt'
Puis si c'est un .txt verifier si le nom est "final.txt" si oui tu fais rien sinon tu supprimes.
 
J'ai testé ca, mais j'ai une erreur

/Users/xxx/Desktop/GLOBAL_merge_supprime_pointvirgule_et_retire_doublon_supprime_les_fichiers_sources_puis_trie_version5.6.sh: line 35: syntax error near unexpected token `('
/Users/xxx/Desktop/GLOBAL_merge_supprime_pointvirgule_et_retire_doublon_supprime_les_fichiers_sources_puis_trie_version5.6.sh: line 35: `rm -v !("final.txt")'

sleep 1
if [ -e final.txt ]
then
echo "********************************************************"
echo "suppression dans le dossier des fichiers texte source sauf final.txt..."
rm -v !(final.txt)
else
echo "pas d'autres fichier que final.txt, aucune suppression..."
echo ""
fi