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 :

Suppression de la 2ème ligne commencant par le même motif que celle du dessus


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2023
    Messages : 8
    Par défaut Suppression de la 2ème ligne commencant par le même motif que celle du dessus
    Pas sur que ça soit clair, mais je souhaite supprimer la 2ème ligne commençant par le même motif que celle du dessus.

    Par exemple, j'ai un fichier :

    qzdfd zefzf
    toto fait du velo
    qsdfq fsdfdsq qfsqdf
    sdfsqfd
    toto va ala plage
    toto rentre chez lui
    kjhsdjsqd

    Je voudrai supprimer uniquement la ligne "toto rentre chez lui" car commençant par "toto" qui en suit une autre commençant aussi par "toto".
    Il y aurait moyen avec sed ou une autre commande ?
    Merci pour votre aide !

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 851
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 851
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par nespresso Voir le message
    Je voudrai supprimer uniquement la ligne "toto rentre chez lui" car commençant par "toto" qui en suit une autre commençant aussi par "toto".
    Il y aurait moyen avec sed ou une autre commande ?
    Il faut coder une "machine à état"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    etat=""
    tant que ligne; alors
        si ligne ne commence pas pareil que etat alors écrire ligne (sous-entendu que ce script prendra ton fichier originel pour en créer une copie expurgée)
        etat=ligne
    fin tant que
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 376
    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 376
    Par défaut
    Déjà, une question sur le besoin: Quid du cas suivant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    titi 1
    toto 1
    toto 3
    toto 2
    tata

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2023
    Messages : 8
    Par défaut
    Citation Envoyé par disedorgue Voir le message
    Déjà, une question sur le besoin: Quid du cas suivant ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    titi 1
    toto 1
    toto 3
    toto 2
    tata
    Bonne remarque, mais je n'ai pas ce cas, au plus 2 occurences.

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 5 295
    Par défaut
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '((FNR>1)&&($1==m)){next;} {m=$1;print;}'

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2023
    Messages : 8
    Par défaut
    Citation Envoyé par Flodelarab Voir le message
    Bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    awk '((FNR>1)&&($1==m)){next;} {m=$1;print;}'
    Merci, ça marche en grande partie.
    Je n'ai pas précisé, mais il ne faut pas que cela impacte d'autres lignes qui se suivraient en commencant par le même mot.

    exemple :

    qzdfd zefzf
    toto fait du velo
    tata fsdfdsq qfsqdf
    tata ffrml zelzmlf
    sdfsqfd
    toto va ala plage
    toto rentre chez lui
    kjhsdjsqd

    toto et tata seraient concernés, alors que je souhaite uniquement toto.
    Je ne sais pas si on peut l'adapter en lui donnant une expression régulière ?
    Mais je garde en tous cas, ça servira c'est sur !

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2023
    Messages : 8
    Par défaut
    Merci pour le retour rapide.
    Je vais regarder ça.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2023
    Messages : 8
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Bonjour

    Il faut coder une "machine à état"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    etat=""
    tant que ligne; alors
        si ligne ne commence pas pareil que etat alors écrire ligne (sous-entendu que ce script prendra ton fichier originel pour en créer une copie expurgée)
        etat=ligne
    fin tant que
    Merci, j'ai pu faire un petit script, qui fait le travail

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 673
    Par défaut
    c'est sympa le partage, quand même.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Décembre 2023
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2023
    Messages : 8
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    c'est sympa le partage, quand même.
    Je l'ai fais comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while read ligne;
    do
            if [[ ${ligne} != toto* ]] ; then
            echo $ligne >> 04122023.txt
            fi
     
            if [[ ${ligne} == toto* ]] && [[ ${etat} != toto* ]] ; then
            echo $ligne >> 04122023.txt
            fi
     
            etat=$ligne
    done < 04122023-a.txt

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

Discussions similaires

  1. Supprimer les lignes commencant par
    Par 8e8eClo dans le forum VBA Word
    Réponses: 10
    Dernier message: 13/10/2011, 22h43
  2. premiere ligne commencant par ID;
    Par ahmet57 dans le forum Excel
    Réponses: 1
    Dernier message: 08/01/2009, 21h16
  3. recuperation des lignes commencant par -
    Par vince2005 dans le forum Langage
    Réponses: 1
    Dernier message: 24/04/2007, 14h55
  4. Réponses: 6
    Dernier message: 06/01/2007, 17h30
  5. [langage] Trouvé les lignes commencant par [
    Par Nervix dans le forum Langage
    Réponses: 2
    Dernier message: 13/07/2004, 10h04

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