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 :

Concaténer plusieurs lignes selon une condition


Sujet :

Shell et commandes GNU

  1. #21
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Points : 133
    Points
    133
    Par défaut
    la variable liste contient tout les numéros vérifiant le critère de sed,
    sed -n -e '/deg'"${j}"'/ {s/^[^:]*:\([0-9]*\).*/\1/;p}' fichier
    1
    2
    3
    10
    11
    12
    13
    14
    15

  2. #22
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Ok, mais bon, comme je te l'ai dit plus haut, il y a sûrement un caractère qui fiche la pagaille et sans rien pour tester difficile de t'aider davantage

    Sinon, concernant ce passage :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in $liste
    do 
    cat $i.txt >> resultat
    numero=$( echo $i.txt | sed 's/\.txt//')
    Ça ne sert à rien de créer la variable "${numero}" puisqu'en fait elle existe déjà (${i})
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  3. #23
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Points : 133
    Points
    133
    Par défaut
    Ça ne sert à rien de créer la variable "${numero}" puisqu'en fait elle existe déjà (${i})
    justement, je veux les numéros de $i.txt qui sont copiés dans résultat et non pas tous les $i de for

    le problème provient de $j dans le sed ,mais je vois pas la solution

  4. #24
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par AJ_ing Voir le message
    justement, je veux les numéros de $i.txt qui sont copiés dans résultat et non pas tous les $i de for
    D'après toi que retourne la commande echo $i.txt | sed 's/\.txt//' si "i" vaut 2 ?
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  5. #25
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    J'avoue que j'ai beaucoup de mal avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    numero=$( echo $i.txt | sed 's/\.txt//')


    Edit : Grilled by zippe31

    Pour ne pas être complétement hors-sujet, je rajouterais que ton code est pas du tout efficace car tu dois reparcourir plusieurs fois ton fichier pour effectuer ton traitement. Tu devrais vraiment envisager de construire un script qui n'a besoin que d'un passage pour effectuer ton traitement.

  6. #26
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par AJ_ing Voir le message
    mais mon souci c'est le sed
    Je me répète, mais sans matière à tester, tu te retrouves seul pour régler ton problème
    $ man woman
    Il n'y a pas de page de manuel pour woman.

  7. #27
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    Pourquoi faire simple quand on on peut faire compliqué ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     awk -F: '$3 ~ /[033|130|224]/{ var=gensub("[^0-9]*([0-9]*).*","\\1",1,$4); printf  $5"\n"  >> "taille_"var".txt"   }' texte.txt

  8. #28
    Expert confirmé
    Avatar de becket
    Profil pro
    Informaticien multitâches
    Inscrit en
    Février 2005
    Messages
    2 854
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Informaticien multitâches
    Secteur : Service public

    Informations forums :
    Inscription : Février 2005
    Messages : 2 854
    Points : 5 915
    Points
    5 915
    Par défaut
    La sortie se fait dans des fichiers dans le répertoire courant taille_XX.txt

  9. #29
    Membre habitué
    Profil pro
    Inscrit en
    Février 2011
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2011
    Messages : 176
    Points : 133
    Points
    133
    Par défaut
    le problème provient de * devant le mot deg ,lol, et tout va bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/numero:'$i' .*degradation:deg'${j}' / { s/.*texte: *//p}'
    Merci à tous

  10. #30
    Expert éminent

    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
    Points : 6 276
    Points
    6 276
    Par défaut
    Citation Envoyé par AJ_ing Voir le message
    le problème provient de * devant le mot deg ,lol, et tout va bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/numero:'$i' .*degradation:deg'${j}' / { s/.*texte: *//p}'
    Merci à tous
    Si tu faisais allusion à cette syntaxe donnée plus haut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/numero:'"${numero}"' .*degradation: *deg'"${j}"'/ { s/.*texte: *//p}' fichier
    Je ne vois pas en quoi il était problématique étant donné qu'il matchait un espace (existant ou pas) avant le mot "deg"

    Mais comme dis plus haut, sans savoir à quoi ressemble ton fichier d'origine, difficile d'affirmer ou d'infirmer quoi que ce soit
    $ man woman
    Il n'y a pas de page de manuel pour woman.

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/02/2015, 04h25
  2. Supprimer des lignes selon une condition
    Par j0joo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 27/03/2014, 14h40
  3. Concatener plusieurs lignes en une selon condition
    Par budfox777 dans le forum Excel
    Réponses: 3
    Dernier message: 27/03/2012, 18h40
  4. [XL-2003] Insérer une ligne selon une condition
    Par MiXinG dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/07/2009, 17h20
  5. Concaténer plusieurs ligne d'une m^me table
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 11/08/2008, 16h13

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