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 POSIX Discussion :

Supprimer plusieurs données avec sed


Sujet :

Shell et commandes POSIX

  1. #1
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut Supprimer plusieurs données avec sed
    Bonjour

    Je dispose d'un fichier 'hosts' dont voici un extrait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    # Title: StevenBlack/hosts with the fakenews, gambling, porn and social extensions #
    # This hosts file is a merged collection of hosts from reputable sources,
    # with a dash of crowd sourcing via GitHub
    #
    # Date: 15 November 2020 18:37:51 (UTC)
    # Extensions added to this file: fakenews, gambling, porn, social
    # Number of unique domains: 88,597
    #
    # Fetch the latest version of this file: https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews-gambling-porn-social/hosts
    # Project home page: https://github.com/StevenBlack/hosts
    # Project releases: https://github.com/StevenBlack/hosts/releases
    #
    # ===============================================================
     
    127.0.0.1 localhost
    127.0.0.1 localhost.localdomain
    127.0.0.1 local
    255.255.255.255 broadcasthost
    ::1 localhost
    ::1 ip6-localhost
    ::1 ip6-loopback
    fe80::1%lo0 localhost
    ff00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts
    0.0.0.0 0.0.0.0
     
    # Custom host records are listed here.
     
     
    # End of custom host records.
    # Start StevenBlack
     
    #=====================================
    # Hosts contributed by Steven Black
    # http://stevenblack.com
     
    0.0.0.0 n2019cov.000webhostapp.com
    0.0.0.0 webmail-who-int.000webhostapp.com
    0.0.0.0 010sec.com
    0.0.0.0 01mspmd5yalky8.com
    Avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cat "t_f" |\
        sed -r -e 's/#.*//g' \
               -e '/^\s*$/d' \
               -e 's/\r//g' >> "$p_f"
    Je parviens à supprimer tous les commentaires commençons par '#', les lignes vides et les retours à la ligne.
    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    127.0.0.1 localhost
    127.0.0.1 localhost.localdomain
    127.0.0.1 local
    255.255.255.255 broadcasthost
    ::1 localhost
    ::1 ip6-localhost
    ::1 ip6-loopback
    fe80::1%lo0 localhost
    ff00::0 ip6-localnet
    ff00::0 ip6-mcastprefix
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters
    ff02::3 ip6-allhosts
    0.0.0.0 0.0.0.0
    0.0.0.0 n2019cov.000webhostapp.com
    0.0.0.0 webmail-who-int.000webhostapp.com
    0.0.0.0 010sec.com
    0.0.0.0 01mspmd5yalky8.com
    Je dois également supprimer toutes les parties en bleue mais à ce stade, je bloque. Un petit coup de main s'il vous plaît ?

    En vous remerciant par avance
    .Olivier

  2. #2
    Expert éminent sénior Avatar de Flodelarab
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    5 238
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente (Poitou Charente)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 238
    Points : 13 443
    Points
    13 443
    Par défaut
    Bonjour

    Alors d'abord, je t'invite à la prudence. Tu ne supprimes pas les lignes de commentaires mais les lignes qui ont un commentaire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $ grep '.#' /etc/hosts |wc -l
    167
    $ grep '#' /etc/hosts |wc -l
    366
    $ cat /etc/hosts |wc -l
    13494
    Exemple ne devant pas être supprimé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    74.125.127.105 g        # google.com
    Ensuite, dans le fichier, les lignes ne sont pas en bleu. Quels sont les critères de choix qui t'ont poussé à mettre ces bouts en bleu. Ensuite, on traduira en regex.
    Cette réponse vous apporte quelque chose ? Cliquez sur en bas à droite du message.

  3. #3
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Coucou

    J'utilise 'unwind' qui est un résolveur DNS de validation sous OpenBSD 6.8.

    L'objectif, c'est de créer une liste de blocage concernant les fake news, les jeux de hasard, la pornographie etc.

    Cette liste a juste besoin des noms d'hôte. Je ne veux en aucun cas intégrer les 88597 noms d'hôtes dans mon fichier 'hosts'
    .Olivier

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 266
    Points : 12 681
    Points
    12 681
    Par défaut
    Bonjour,
    Et si tu essayais dans l'autre sens, passer par un grep pour récupérer ce que tu as besoin au lieu de virer ce que tu n'as pas besoin ?

    si je reprends ton fichier en exemple, la ligne suivante de grep récupère les 4 éléments à garder:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep -o ' [0-9a-z.-]\+\.[a-z]\{2,4\}[^a-z0-9.-]*$' fichier
    Après, faudrait voir si ça fonctionne sur la totalité du vrai fichier.

    Sachant qu'ici, la regex (certainement incomplète) part sur le principe qu'un nom d'hote est une suite de lettre,chiffre,tiret,point et surtout fini par un point + au moins 2 lettres et au plus 4 lettres.

    PS: Mon test est fait sous un linux, donc grep est peut-être différent.
    Cordialement.

  5. #5
    Expert éminent

    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juillet 2004
    Messages
    2 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 756
    Points : 6 686
    Points
    6 686
    Par défaut
    Désolé pour la réponse tardive, tout d'abord je te remercie pour cet exemple que je vais tester de ce pas
    .Olivier

Discussions similaires

  1. Supprimer plusieurs tables avec le même préfixe
    Par laurentSc dans le forum Administration
    Réponses: 5
    Dernier message: 26/11/2008, 22h30
  2. Réponses: 2
    Dernier message: 25/08/2008, 11h41
  3. Supprimer des données avec un trigger
    Par engi dans le forum SQL
    Réponses: 3
    Dernier message: 09/04/2008, 16h25
  4. Supprimer plusieurs lignes avec VBA
    Par Nounours1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2008, 12h50
  5. SQL Server, mise en ligne de plusieur données avec délimiteur
    Par manhattan.project dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 12/06/2007, 18h52

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