IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

[Bash] Script de nettoyage


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Par défaut [Bash] Script de nettoyage
    Hello,
    Pour un projet perso je travail avec une énorme liste de nom de domaine (+ de 50000), seulement certains comportent encore le fameux "www." de début d'url que je souhaite supprimer automatiquement, avant un effacement des doublons pour éviter les erreurs par la suite.
    Pour le moment voilà ce que ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/bin bash
     
    #Suppression du www.
    sed 's/www.//' fichier_temp.txt > /home/user/Bureau/fichier_temp.txt
     
    #Effacement des doublons
    sort -g /home/user/Bureau/fichier_temp.txt | uniq > /home/user/Bureau/fichier_final.txt
     
    #Effacement du fichier temporaire
    rm /home/user/Bureau/fichier_temp.txt
    Le fichier temp me sert de lien entre les deux commandes mais il existe surement plus simple.
    Si quelqu'un peut me dire si j'ai tout bon car j'ai peur que ce script efface également les 'www.' pouvant se trouver ailleurs qu'en début de ligne, par exemple que "www.developpezwww.zty" devienne "developpez.zty" ce qui n'est pas le but rechercher surtout pour mon projet.

  2. #2
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    Salut,

    Si quelqu'un peut me dire si j'ai tout bon car j'ai peur que ce script efface également les 'www.' pouvant se trouver ailleurs qu'en début de ligne, par exemple que "www.developpezwww.zty" devienne "developpez.zty" ce qui n'est pas le but rechercher surtout pour mon projet.
    En effet,
    pour que ça respecte ta demande :
    mais avec ton code www.developpezwww.zty serait devenu developpezwww.zty mais developpezwww.zty serait devenu developpezzty car sans l'option g, sed ne remplace que la 1ere occurrence.


    Le fichier temp me sert de lien entre les deux commandes mais il existe surement plus simple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed 's/www.//' -i fichier_temp.txt # Modification directe
    sort -u /home/user/Bureau/fichier_temp.txt # -u pour l'option unique si -g n'est pas important
    Pour tout faire en un mais c'est plus qu'une mauvaise idée de travailler sur un fichier et de le modifier en même temps... (continue de passer par un fichier temporaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/www.//' fichier_temp.txt | sort -u -o fichier_temp.txt # Mais plus que boiteux...
    ou en passant par une variable mais ça risque d'être lourd...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    valeurs=$(sed 's/www.//' fichier_temp.txt | sort -u)
    echo "${valeurs}" > fichier_temp.txt

  3. #3
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Par défaut
    Citation Envoyé par hizoka Voir le message
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed 's/www.//' -i fichier_temp.txt # Modification directe
    sort -u /home/user/Bureau/fichier_temp.txt # -u pour l'option unique si -g n'est pas important
    Salut Hizoka, je te remercie car ça fonctionne du tonnerre, seul soucis je viens de me rendre compte que je vais devoir aussi supprimer les lignes vides ainsi que toutes celles où il y a une dièse dedans (lignes qui sont là qu'à but informatif et donc je n'en ai pas besoin pour un projet autonome et cela risque d'engendrer des erreurs) donc si tu a une autre astuce en stock je suis preneur.

    J'essaye quand même, corrige moi ensuite mais je pense avoir tout juste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    sed '/^$/d' -i fichier_temp.txt
    sed '/#/d' -i fichier_temp.txt
    sort -u /home/user/Bureau/fichier_temp.txt
    Mais déjà merci pour ça !

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    il faut aussi protéger le point pour qu'il ne soit pas considérer comme un caractère quelconque, mais comme un vrai point.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  5. #5
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2017
    Messages : 9
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    il faut aussi protéger le point pour qu'il ne soit pas considérer comme un caractère quelconque.
    Alors là je ne te suit pas

  6. #6
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 658
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 658
    Par défaut
    dans une regex, le point est un caractère spécial, qui remplace n'importe quel caractère.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  7. #7
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Raspy Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sed '/^$/d' -i fichier_temp.txt
    sed '/#/d' -i fichier_temp.txt
    Plusieurs commandes sed peuvent être regroupées avec l'option -e :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e -i  '/^$/d;/#/d' fichier_temp.txt
    Voir la FAQ sur sed.
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 563
    Par défaut
    L'option -e ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
           -e script, --expression=script
                  add the script to the commands to be executed
    pas besoin de -e ça fonctionne sans.

  9. #9
    Rédacteur


    Homme Profil pro
    Instituteur retraité
    Inscrit en
    Novembre 2015
    Messages
    892
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Instituteur retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 892
    Billets dans le blog
    1
    Par défaut
    On trouve de nombreuses pages sur sed qui présentent l'option -e comme permettant de combiner plusieurs commandes sed. Par exemple encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e '4d' -e '2d' mon-fichier.txt
    La combinaison avec séparation par ";" n'aurait pas besoin de l'option -e pour que ça soit correctement interprété ?

    Si des spécialistes de sed passent par là, ça serait bien de nous éclairer précisément sur l'option -e, ça permettrait de compléter/corriger la FAQ.
    Plus on apprend, plus on découvre que ce que l'on sait est insignifiant face à tout ce que l'on ne sait pas.
    Retrouvez la liste de mes articles et tutoriels sur la sauvegarde-restauration, les distributions éducatives, le système Linux et le Raspberry pi en cliquant sur ce lien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AIX] Script de nettoyage ODM
    Par Abdelkad dans le forum AIX
    Réponses: 2
    Dernier message: 13/08/2007, 19h03
  2. comment exécuter un bash script à l'intérieur de ma classe java?
    Par moradbe dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 04/03/2007, 04h37
  3. Script de nettoyage
    Par c-ve dans le forum Linux
    Réponses: 6
    Dernier message: 29/05/2006, 11h34
  4. Bout de script de nettoyage
    Par Gwipi dans le forum Langage
    Réponses: 3
    Dernier message: 17/05/2006, 15h09
  5. Probleme avec mon bash script
    Par spynux dans le forum Linux
    Réponses: 1
    Dernier message: 30/03/2006, 09h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo