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 :

aide de sed ou autre


Sujet :

Shell et commandes GNU

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut aide de sed ou autre
    Bonjour a tous.

    J'ai ce fragment de fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    000000002 LDR   L -----nam--2200241Ia-45e0
    000000002 00810 L 0810s9999    xx            000 0 und d
    000000002 020   L $$a8423979210
    000000002 0411  L $$aESPAÑOL
    000000002 090   L $$aBIBLIOTECA DE ENERGIAS RENOVABLES
    000000002 1001  L $$aREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    000000002 24500 L $$aDICCIONARIO ESENCIAL DE LAS CIENCIAS$$cREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    000000002 250   L $$a1 ED
    000000002 260   L $$aMADRID $$b ESPASA CALPE$$c1999
    000000002 300   L $$aXXII, 1002 P.
    Comme vous pouvez le voir, le champ 24500 possède une valeur $a et une autre $c....des fois entre il existe un $b.

    Ce que je voudrais c'est ajouter en fin de ligne du champs $a le caractère ":" et ajouter
    à la suite le caractère "/" pour le champ $c seulement pour le cas ou ce $c existe

    Ça donnerait ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    000000002 24500 L $$aDICCIONARIO ESENCIAL DE LAS CIENCIAS:/$$cREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    
    sed -i '/[0-9]\{9\} 24500   L $$a[0-9]\{\}
    j'ai ce bout de code, mais je connais pas la suite...D'avance merci

  2. #2
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    A vous lire et au regard de votre exemple , on à l'impression qu'il faille simplement modifier "$$c" par ":/$$c" sur l'ensemble de votre fichier
    est-ce exact ?

  3. #3
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Boujour

    presque, ce que vous dites est correct pour tous les enregistrements ou le $c existe...
    Certain ne l'on pas.
    Et seulement pour les ligne qui commences par 24500 L

  4. #4
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat le_fichier | sed "s/\$\$c/:\/\$\$c/g"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    000000002 LDR   L -----nam--2200241Ia-45e0
    000000002 00810 L 0810s9999    xx            000 0 und d
    000000002 020   L $$a8423979210
    000000002 0411  L $$aESPAÑOL
    000000002 090   L $$aBIBLIOTECA DE ENERGIAS RENOVABLES
    000000002 1001  L $$aREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    000000002 24500 L $$aDICCIONARIO ESENCIAL DE LAS CIENCIAS:/$$cREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    000000002 250   L $$a1 ED
    000000002 260   L $$aMADRID $$b ESPASA CALPE:/$$c1999
    000000002 300   L $$aXXII, 1002 P.

  5. #5
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Citation Envoyé par ldiaz Voir le message
    Boujour

    presque, ce que vous dites est correct pour tous les enregistrements ou le $c existe...
    Certain ne l'on pas.
    Et seulement pour les ligne qui commences par 24500 L
    Pouvez vous donner le resultat attendu pour l'ensemble de l'exemple

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Salut

    voila c'est ce que je voulais dire, tu vois ton code a aussi changé celui - ci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    000000002 260   L $$aMADRID $$b ESPASA CALPE:/$$c1999
    Et la faut pas.

    juste les 000000002 24500 L
    au depart j'avais essayé avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 24500   L

  7. #7
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Oui je peux:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    000000002 LDR   L -----nam--2200241Ia-45e0
    000000002 00810 L 0810s9999    xx            000 0 und d
    000000002 020   L $$a8423979210
    000000002 0411  L $$aESPAÑOL
    000000002 090   L $$aBIBLIOTECA DE ENERGIAS RENOVABLES
    000000002 1001  L $$aREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    000000002 24500 L $$aDICCIONARIO ESENCIAL DE LAS CIENCIAS:/$$cREAL ACADEMIA DE CIENCIAS EXACTAS, FISICAS Y NATURALES
    000000002 250   L $$a1 ED
    000000002 260   L $$aMADRID $$b ESPASA CALPE$$c1999
    000000002 300   L $$aXXII, 1002 P.
    Voila comme ceci, les changement seulement pour le champ titre (cad 24500 )

  8. #8
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Alors comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat mon_fichier | sed "/[0-9]\{9\} 24500 L \$\$a/s/\$\$c/:\/\$\$c/g"

  9. #9
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cat bib22.mrk_aleph_sec.dat | sed "/[0-9]\{9\} 24500 L \$\$a/s/\$\$c/:\/\$\$c/g"
    Variable name must contain alphanumeric characters.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     ps
      PID TTY          TIME CMD
    14938 pts/0    00:00:00 tcsh
    15137 pts/0    00:00:00 ps
    Je cais changer a bash pour voir

  10. #10
    Membre confirmé
    Avatar de argoet
    Inscrit en
    Mai 2002
    Messages
    582
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 582
    Points : 562
    Points
    562
    Par défaut
    Dans le doute des fois que $a et $c soit interpretée comme des variables vous pouvez faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat ok | sed "/[0-9]\{9\} 24500 L \$\$\a/s/\$\$c/:\/\$\$\c/g"
    ou (remplacement double quote par un simple quote)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat ok | sed '/[0-9]\{9\} 24500 L \$\$\a/s/\$\$c/:\/\$\$\c/g'
    Je l'ai testé sur un HP-UX en ksh et cela est OK

  11. #11
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Points : 289
    Points
    289
    Par défaut
    Avec bash ca marche.
    Merci pour ton aide !! genial

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/12/2008, 11h29
  2. Aide avec SED
    Par plaury dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 25/08/2008, 22h41
  3. Aide avec sed
    Par elloyeen dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 09/06/2008, 14h36

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