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] Nombre d'occurences


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut [BASH] Nombre d'occurences
    Bonjour,

    J'aimerais supprimer toutes les lignes de la forme : blabla, blabla, blabla, blabla
    En gros, toutes les lignes qui ont trois virgules.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    while read line
    do
            while read line2
    	do
    		nbr_virgule=$(echo $line2 | sed "s/\(,\)/\1\n/"| grep -c ",")
    		if [ "$nbr_virgule" -eq "3" ]
    		then 
    		sed "/$line2/d" ./$line/data.txt
    		fi
    	done < ./$line/data.txt
    done < ./iso2.txt
    Problème : cela ne fait absolument rien ... D'où vient le soucis ?

    Merci.

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

    Informations forums :
    Inscription : Février 2008
    Messages : 7 654
    Par défaut
    Bonjour,

    KISS*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    tmpF=$(mktemp)
    while read line
    do
       file="./$line/data.txt"
       awk 'NF!=4' FS=',' "$file" > "$tmpF" 
       cp "$tmpF" "$file"
    done < ./iso2.txt
    rm "$tmpF"
    --
    *Keep It Simple Stupid

    Edit: 24/10/2015 à 21h48.
    Motif: NF!=4 et pas 3, car 3 séparateurs = 4 champs !
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut
    Bonsoir,

    Merci d'avoir pris le temps de me répondre. Malheureusement, votre solution ne marche pas : mon fichier n'est pas modifié et je n'obtiens aucune erreur.

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    1 946
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 946
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat plop 
    blabla, blabla, blabla, blabla
    blabla, blabla, blabla, blabla,blabla
    blabla, blabla, blabla, blabla
    blabla, blabla, blabla, blabla,blabla
    blabla, blabla, blabla, blabla
    blabla, blabla, blabla, blabla,
    blabla, blabla, blabla, blabla
    blabla, blabla, blabla, blabla,blabla,blabla
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ egrep -v '^([^,]*,){3,3}[^,]*$' plop 
    blabla, blabla, blabla, blabla,blabla
    blabla, blabla, blabla, blabla,blabla
    blabla, blabla, blabla, blabla,
    blabla, blabla, blabla, blabla,blabla,blabla
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $ sed -n '/^\([^,]*,\)\{3,3\}[^,]*$/!p' plop 
    blabla, blabla, blabla, blabla,blabla
    blabla, blabla, blabla, blabla,blabla
    blabla, blabla, blabla, blabla,
    blabla, blabla, blabla, blabla,blabla,blabla

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 23
    Par défaut
    Parfait, merci !

  6. #6
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    Citation Envoyé par Svengali48 Voir le message
    Malheureusement, votre solution ne marche pas : mon fichier n'est pas modifié et je n'obtiens aucune erreur.
    TIMTOWTDI* c'est un effet de bord juste, en modifiant un peu le awk pour faire rigoureusement la même chose ça passe awk -F',' 'NF!=4' "$file" > "$tmpF"

    *TIMTOWTDI: there is more than one way to do it (Perl motto)

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

Discussions similaires

  1. Réponses: 28
    Dernier message: 22/09/2005, 11h57
  2. Nombre d'occurence d'un motif par ligne
    Par anne-so dans le forum Langage
    Réponses: 8
    Dernier message: 22/08/2005, 19h36
  3. Bash - Nombre de liens physiques
    Par troumad dans le forum Linux
    Réponses: 8
    Dernier message: 08/03/2005, 11h10
  4. Réponses: 8
    Dernier message: 18/01/2005, 10h58
  5. recherche du nombre d'occurences dans une table
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 09/01/2004, 20h03

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