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 :

Expressions régulières avec SED


Sujet :

Shell et commandes GNU

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut Expressions régulières avec SED
    Bonjour a tous,

    j'ai ce fichier:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <controlfield tag="001">   a0000019</controlfield>
    <controlfield tag="001">   a0000020</controlfield>
    <controlfield tag="001">   a0000021</controlfield>
    Et je voudrais enlever les espaces entre le 001"> et le a
    A la final j'aurais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <controlfield tag="001">0000019</controlfield>
    <controlfield tag="001">0000020</controlfield>
    <controlfield tag="001">0000021</controlfield>
    Je pense qu'avec un find replace je devrais pouvoir le faire, mais je voudrais apprendre a utiliser sed, donc j'ai testé ceci:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/^[tag=\"001\">   a]/s/tag=\"001\">'/ fichier.txt
    Mais ça marcha pas, j'ai une erreur 's

    Apres cet exercice je voudrais faire ceci:
    J'ai ce fichier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <subfield code="9">0004242</subfield>
    <subfield code="9">0000067</subfield>
    <subfield code="9">0014242</subfield>
    Je voudrais enlever les 0 donc ça ferait ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <subfield code="9">4242</subfield>
    <subfield code="9">67</subfield>
    <subfield code="9">14242</subfield>
    Alors avec sed toujours, je ne trouve pas le moyen de lui dire, pour chaque code="9"> enlever tous les 0 jusqu'au premier caracter different de 0.

    Un petit coup de pouce serait cool.
    Merci a tous.

  2. #2
    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
    $ cat plop 
    <controlfield tag="001">   a0000019</controlfield>
    <controlfield tag="001">   a0000020</controlfield>
    <controlfield tag="001">   a0000021</controlfield>
     
    <subfield code="9">0004242</subfield>
    <subfield code="9">0000067</subfield>
    <subfield code="9">0014242</subfield>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ sed '/tag="001"/ s/>  *a/>/;/code="9"/ s/00*//' plop 
    <controlfield tag="001">0000019</controlfield>
    <controlfield tag="001">0000020</controlfield>
    <controlfield tag="001">0000021</controlfield>
     
    <subfield code="9">4242</subfield>
    <subfield code="9">67</subfield>
    <subfield code="9">14242</subfield>
     
    $

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut

    whaaa cool
    alors si je comprend bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/tag="001"/ s/>  *a/>/;/code="9"/ s/00*//'
    le ; au centre sert a separer 2 commandes sed dans une seule ligne.
    la premiere commande ok le s pour substitute.

    le * devant le a c'est pour si jamais y'a plusieurs espaces en blanc avant le a?
    ensuite le 00*// alors la je comprend pas...

    Si j'ai ça par exemple, ça marchera pareil?
    tag="001">0000001<
    avec tous ces zero?

    D'avance merci

  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
    Citation Envoyé par ldiaz Voir le message
    le ; au centre sert a separer 2 commandes sed dans une seule ligne.
    Exactement.

    le * devant le a c'est pour si jamais y'a plusieurs espaces en blanc avant le a?
    ensuite le 00*// alors la je comprend pas...
    En fait l'astérisque n'est pas devant le "a" mais plutôt derrière l'espace (et même deux espace pour être exact). L'astérisque est un quantificateur, il signifie, zéro, un ou plusieurs occurrence(s) du caractère le précédent. Dans notre cas on cible donc au moins un espace (le 1er), suivi d'aucun, d'un ou plusieurs espace(s).
    Et c'est la même chose pour les 0 (zéros). On cible au moins un zéro (le 1er), suivi d'aucun, d'un ou plusieurs zéro(s).



    Si j'ai ça par exemple, ça marchera pareil?
    tag="001">0000001<
    avec tous ces zero?
    Oui, mais il faudra bien cibler les zéros qui suivent le chevron (>), sans quoi ceux du tag subiront le même effet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ echo 'tag="001">0000001<' | sed 's/00*//'
    tag="1">0000001<
     
    $ echo 'tag="001">0000001<' | sed 's/00*//g'
    tag="1">1<
     
    $ echo 'tag="001">0000001<' | sed 's/>00*/>/'
    tag="001">1<
     
    $ echo 'tag="001">0000001<' | sed 's/00*//2'
    tag="001">1<
     
    $

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Super, je crois que j'ai compris, je vais faire des essais pour voir un peu. Merci beaucoup pour la commande et les explications.
    Je te souhaite un bonne journée !

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    j'ai testé le sed en reel avec le fichier, et je crois qu'il y a quelque chose qu'il a pas aimé:

    Sous linux si j'edite le fichier j'ai ceci:

    Tu vois il y a cd ^_ devant et donc le sed ne marche pas..Comment faire pour arranger ça?

    Et le segond truc avec code="9" ça marche pas non plus:
    Ca reste comme ça apres le sed.
    Je fais le sed comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/tag="001"/ s/>  *a/>/;/code="9"/ s/00*//' fichier.sql >luis.sql
    <subfield code="9">0006771


    D'avance merci

  7. #7
    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
    Affiche la sortie de ton fichier avec cette commande :

    Et poste le résultat.

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonsoir
    le fichier est enorme, j'ai fait un grep pour afficher seulement la partie qui nous interesse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <controlfield tag="001">  ^_a0000007</controlfield>
     <controlfield tag="001">  ^_a0000010</controlfield>
    J'ai edité le fichier sous windows avec notepad++ et le ^_ correspond a un caractere etrange "US" en gras...
    Ça te parle?

    Je crois que si je fais un replace de US dans notepad++ ton sed devrait marcher.

  9. #9
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Bonjour

    ok je confirme, j'ai fait un replace du caractere "us" par rien avec notepad++ et le sed a marché !! genial.
    Y'a juste le reste du code pour le code="9" qui marche pas...

  10. #10
    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
    Citation Envoyé par ldiaz Voir le message
    Y'a juste le reste du code pour le code="9" qui marche pas...
    Il doit rester des caractères non-imprimables dans ton fichier ou alors la mise en forme n'est pas la bonne

    Essaies d'afficher un bout de ton fichier réel avec la commande cat -A, sans quoi il est impossible de deviner

    Les échanges Windows <=> GNU/Linux au niveau format de fichier sont toujours source de problèmes, surtout quand il s'agit de traiter les fichiers avec différents outils

  11. #11
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    le vrai fichier c'est ça:

    c'est un INSERT INTO de mysql avec un champs XML ...C'est dans ce champs que se trouvent les code="9"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (29369, 29369, NULL, NULL, NULL, '84-667-3834-7', NULL, NULL, ' : Anaya-Haritza', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2012-04-23 08:22:26', NULL, '4 bolumen dituen karpeta  (159, 31, 39, 95 or.)', NULL, ' ; 32 x 26 cm', 'Madrid', NULL, 05611e20201f6332393336391f6432393336391e1d, ' http://www.anaya.es |  http://www.hezkuntza.ejgv.euskadi.net/r43-573/eu/contenidos/informacion/dih6/eu_15733/adjuntos/8466738347.pdf', NULL, NULL, NULL, NULL, '', NULL, '<?xml version="1.0" encoding="UTF-8"?>\n<record\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"\n    xmlns="http://www.loc.gov/MARC21/slim">\n\n  <leader>01136aam a2200277 b 4500</leader>\n  <controlfield tag="001">00000000000001</controlfield>\n  <controlfield tag="005">20120423082226.0</controlfield>\n  <controlfield tag="008">060403 2004           b f        0 baq</controlfield>\n  <datafield tag="018" ind1=" " ind2=" ">\n    <subfield code="a">9</subfield>\n  </datafield>\n  <datafield tag="019" ind1=" " ind2=" ">\n    <subfield code="a">M-34416-2004</subfield>\n  </datafield>\n  <datafield tag="020" ind1=" " ind2=" ">\n    <subfield code="a">84-667-3834-7</subfield>\n  </datafield>\n  <datafield tag="027" ind1=" " ind2=" ">\n    <subfield code="a">11100</subfield>\n  </datafield>\n  <datafield tag="100" ind1="1" ind2=" ">\n    <subfield code="a">Ferrero, Luis</subfield>\n    <subfield code="9">0000375</subfield>\n  </datafield>\n  <datafield tag="245" ind1="1" ind2="0">\n    <subfield code="a">Matematika</subfield>\n    <subfield code="b"> :2:  Irakasleentzako materiala</subfield>\n    <subfield code="c"> / Luis Ferrero, María del Carmen Jiménez, María Gregoria Martín</subfield>\n  </datafield>\n  <datafield tag="260" ind1=" " ind2=" ">\n    <subfield code="a">Madrid</subfield>\n    <subfield code="b"> : Anaya-Haritza</subfield>\n    <subfield code="c">, 2004</subfield>\n  </datafield>\n  <datafield tag="300" ind1=" " ind2=" ">\n    <subfield code="a">4 bolumen dituen karpeta  (159, 31, 39, 95 or.)</subfield>\n    <subfield code="c"> ; 32 x 26 cm</subfield>\n  </datafield>\n  <datafield tag="440" ind1=" " ind2="0">\n    <subfield code="a">Apain eta dotore</subfield>\n  </datafield>\n  <datafield tag="500" ind1=" " ind2=" ">\n    <subfield code="a">2004.10.19</subfield>\n  </datafield>\n  <datafield tag="505" ind1="0" ind2=" ">\n    <subfield code="a">1. bolumena: Proposamen didaktikoa</subfield>\n    <subfield code="a"> -- 2. bolumena: Programazioa</subfield>\n    <subfield code="a"> -- 3. bolumena: Ebaluazioa</subfield>\n    <subfield code="a"> -- 4. bolumena: Aniztasunaren tratamendua</subfield>\n  </datafield>\n  <datafield tag="521" ind1="0" ind2=" ">\n    <subfield code="a">2.maila</subfield>\n  </datafield>\n  <datafield tag="650" ind1=" " ind2="4">\n    <subfield code="a">LMH - Matematika</subfield>\n    <subfield code="9">0007003</subfield>\n  </datafield>\n  <datafield tag="700" ind1="1" ind2=" ">\n    <subfield code="a">Jimenez, Maria del Carmen</subfield>\n    <subfield code="9">0001284</subfield>\n  </datafield>\n  <datafield tag="700" ind1="1" ind2=" ">\n    <subfield code="a">Martín, María Gregoria</subfield>\n  </datafield>\n  <datafield tag="856" ind1=" " ind2=" ">\n    <subfield code="u"> http://www.anaya.es</subfield>\n    <subfield code="z"> Argitaletxearen web-orria</subfield>\n  </datafield>\n  <datafield tag="856" ind1=" " ind2=" ">\n    <subfield code="u"> http://www.hezkuntza.ejgv.euskadi.net/r43-573/eu/contenidos/informacion/dih6/eu_15733/adjuntos/8466738347.pdf</subfield>\n    <subfield code="z"> Aurkibidea</subfield>\n  </datafield>\n  <datafield tag="999" ind1=" " ind2=" ">\n    <subfield code="c">29369</subfield>\n    <subfield code="d">29369</subfield>\n  </datafield>\n</record>\n'),
    (29370, 29370, NULL, NULL, NULL, '84-88303-11-4 (1. libk.) | 84-', NULL, NULL, ' : Klasikoak', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2012-04-23 08:22:27', NULL, '2 libk.', NULL, ' ; 24 cm', 'Bilbo', NULL, '<?xml version="1.0" encoding="UTF-8"?>\n<record\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"\n    xmlns="http://www.loc.gov/MARC21/slim">\n\n  <leader>01186nam a2200349 b 4500</leader>\n  <controlfield tag="001">00000000000003</controlfield>\n  <controlfield tag="005">20120423082227.0</controlfield>\n  <controlfield tag="008">060403m20032004esp    e      001 1 baq c</controlfield>\n  <datafield tag="018" ind1=" " ind2=" ">\n    <subfield code="a">11</subfield>\n  </datafield>\n  <datafield tag="019" ind1=" " ind2=" ">\n    <subfield code="a">BI 2674-2003 (1. libk.)</subfield>\n  </datafield>\n  <datafield tag="019" ind1=" " ind2=" ">\n    <subfield code="a">BI 2934-2004 (2. libk.)</subfield>\n  </datafield>\n  <datafield tag="020" ind1=" " ind2=" ">\n    <subfield code="a">84-88303-11-4 (1. libk.)</subfield>\n  </datafield>\n  <datafield tag="020" ind1=" " ind2=" ">\n    <subfield code="a">84-88303-01-7 (2. libk.)</subfield>\n  </datafield>\n  <datafield tag="020" ind1=" " ind2=" ">\n    <subfield code="a">84-88303-12-2 (o. o.)</subfield>\n  </datafield>\n  <datafield tag="041" ind1="0" ind2=" ">\n    <subfield code="a">baq</subfield>\n    <subfield code="h"> lat</subfield>\n  </datafield>\n  <datafield tag="080" ind1=" " ind2=" ">\n    <subfield code="a">1 Tomas Akinokoa, Santua</subfield>\n  </datafield>\n  <datafield tag="100" ind1="0" ind2=" ">\n    <subfield code="a">Tomas Aquinokoa</subfield>\n    <subfield code="c">, Santua</subfield>\n    <subfield code="d"> (1225?-1274)</subfield>\n    <subfield code="9">0001076</subfield>\n  </datafield>\n  <datafield tag="245" ind1="1" ind2="0">\n    <subfield code="a">Tomas Akinokoaren lan hautatuak</subfield>\n    <subfield code="c"> / Tomas Akinokoa ; euskaratzailea: Julen Kalzada ; berrikuslea: Lorea Arrieta Zubillaga ; hitzaurregilea: Ralph McInerny</subfield>\n  </datafield>\n  <datafield tag="250" ind1=" " ind2=" ">\n    <subfield code="a">1. argit</subfield>\n  </datafield>\n  <datafield tag="260" ind1=" " ind2=" ">\n    <subfield code="a">Bilbo</subfield>\n    <subfield code="b"> : Klasikoak</subfield>\n    <subfield code="c">, 2003-2004</subfield>\n  </datafield>\n  <datafield tag="300" ind1=" " ind2=" ">\n    <subfield code="a">2 libk.</subfield>\n    <subfield code="c"> ; 24 cm</subfield>\n  </datafield>\n  <datafield tag="440" ind1=" " ind2="0">\n    <subfield code="a">Klasikoak 1991</subfield>\n  </datafield>\n  <datafield tag="500" ind1=" " ind2=" ">\n    <subfield code="a">2003.07.24</subfield>\n  </datafield>\n  <datafield tag="500" ind1=" " ind2=" ">\n    <subfield code="a">2004.12.19</subfield>\n  </datafield>\n  <datafield tag="650" ind1=" " ind2="4">\n    <subfield code="a"> Etika</subfield>\n    <subfield code="9">0006771</subfield>\n  </datafield>\n  <datafield tag="650" ind1=" " ind2="4">\n    <subfield code="a">Patristika</subfield>\n    <subfield code="9">0001615</subfield>\n  </datafield>\n  <datafield tag="650" ind1=" " ind2="4">\n    <subfield code="a">Filosofia</subfield>\n    <subfield code="9">0000007</subfield>\n  </datafield>\n  <datafield tag="700" ind1="1" ind2=" ">\n    <subfield code="a">Kaltzada, Julen</subfield>\n    <subfield code="9">0000929</subfield>\n  </datafield>\n  <datafield tag="700" ind1="1" ind2=" ">\n    <subfield code="a">Arrieta Zubillaga, Lorea</subfield>\n    <subfield code="9">0000898</subfield>\n  </datafield>\n  <datafield tag="700" ind1="1" ind2=" ">\n    <subfield code="a">McInerny, Ralph</subfield>\n    <subfield code="9">0001614</subfield>\n  </datafield>\n  <datafield tag="856" ind1=" " ind2=" ">\n    <subfield code="u"> http://www.klasikoak.com/</subfield>\n    <subfield code="z"> Argitaletxearen web-orria</subfield>\n  </datafield>\n  <datafield tag="999" ind1=" " ind2=" ">\n    <subfield code="c">29370</subfield>\n    <subfield code="d">29370</subfield>\n  </datafield>\n</record>\n'),
    (29371, 29371, NULL, NULL, NULL, '84-95338-45-9', NULL, NULL, ' : Elhuyar Fundazioa', NULL, NULL, NULL, NULL, NULL, NULL, NULL, '2012-04-23 08:22:27', ' : soinu, kol.', '1 CD-ROM', NULL, ' ; 20 cm', 'Usurbil', NULL, http://www.elhuyar.com', NULL, NULL, NULL, NULL, '', NULL, '<?xml version="1.0" encoding="UTF-8"?>\n<record\n    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\n    xsi:schemaLocation="http://www.loc.gov/MARC21/slim http://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd"\n    xmlns="http://www.loc.gov/MARC21/slim">\n\n  <leader>00647nmm a2200217 b 4500</leader>\n  <controlfield tag="001">00000000000004</controlfield>\n  <controlfield tag="005">20120423082227.0</controlfield>\n  <controlfield tag="008">060403s2004    esp    j   g        baq c</controlfield>\n  <datafield tag="018" ind1=" " ind2=" ">\n    <subfield code="a">13</subfield>\n  </datafield>\n  <datafield tag="019" ind1=" " ind2=" ">\n    <subfield code="a">SS-656-2004</subfield>\n  </datafield>\n  <datafield tag="020" ind1=" " ind2=" ">\n    <subfield code="a">84-95338-45-9</subfield>\n  </datafield>\n  <datafield tag="027" ind1=" " ind2=" ">\n    <subfield code="a">31120</subfield>\n  </datafield>\n  <datafield tag="080" ind1=" " ind2=" ">\n    <subfield code="a">808.1 (0.034)</subfield>\n  </datafield>\n  <datafield tag="245" ind1="0" ind2="0">\n    <subfield code="a">Zeu idazle!</subfield>\n    <subfield code="h"> [CD-ROMa]</subfield>\n  </datafield>\n  <datafield tag="260" ind1=" " ind2=" ">\n    <subfield code="a">Usurbil</subfield>\n    <subfield code="b"> : Elhuyar Fundazioa</subfield>\n    <subfield code="c">, L.G. 2004</subfield>\n  </datafield>\n  <datafield tag="300" ind1=" " ind2=" ">\n    <subfield code="a">1 CD-ROM</subfield>\n    <subfield code="b"> : soinu, kol.</subfield>\n    <subfield code="c"> ; 20 cm</subfield>\n  </datafield>\n  <datafield tag="500" ind1=" " ind2=" ">\n    <subfield code="a">2004.05.27</subfield>\n  </datafield>\n  <datafield tag="650" ind1=" " ind2="4">\n    <subfield code="a">Konposizioa (Literatura)</subfield>\n    <subfield code="j">-Ordenagailu programak</subfield>\n    <subfield code="9">0004717</subfield>\n  </datafield>\n  <datafield tag="710" ind1="2" ind2=" ">\n    <subfield code="a">Elhuyar Fundazioa</subfield>\n  </datafield>\n  <datafield tag="856" ind1=" " ind2=" ">\n    <subfield code="u"> http://www.elhuyar.com</subfield>\n    <subfield code="z"> Argitaletxearen  web-orria</subfield>\n  </datafield>\n  <datafield tag="999" ind1=" " ind2=" ">\n    <subfield code="c">29371</subfield>\n    <subfield code="d">29371</subfield>\n  </datafield>\n</record>\n'),

  12. #12
    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
    Essaye avec cette syntaxe sed 's/\(<subfield code="9">\)00*\([^>]*>\)/\1\2/g' qui devrait marcher. Chez moi avec le bout de fichier donné, ça marche bien :

    J'affiche d'abord toutes les occurrences de code="9" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ egrep -o '<subfield code="9">[^>]*>' plop 
    <subfield code="9">0000375</subfield>
    <subfield code="9">0007003</subfield>
    <subfield code="9">0001284</subfield>
    <subfield code="9">0001076</subfield>
    <subfield code="9">0006771</subfield>
    <subfield code="9">0001615</subfield>
    <subfield code="9">0000007</subfield>
    <subfield code="9">0000929</subfield>
    <subfield code="9">0000898</subfield>
    <subfield code="9">0001614</subfield>
    <subfield code="9">0004717</subfield>
    Puis j'applique la commande "sed" et j'affiche à nouveau les occurrences :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $ sed 's/\(<subfield code="9">\)00*\([^>]*>\)/\1\2/g' plop | egrep -o '<subfield code="9">[^>]*>'
    <subfield code="9">375</subfield>
    <subfield code="9">7003</subfield>
    <subfield code="9">1284</subfield>
    <subfield code="9">1076</subfield>
    <subfield code="9">6771</subfield>
    <subfield code="9">1615</subfield>
    <subfield code="9">7</subfield>
    <subfield code="9">929</subfield>
    <subfield code="9">898</subfield>
    <subfield code="9">1614</subfield>
    <subfield code="9">4717</subfield>

Discussions similaires

  1. Aide pour une expression régulière avec sed
    Par Loceka dans le forum Administration système
    Réponses: 4
    Dernier message: 05/10/2011, 09h48
  2. [RegEx] Expression régulière avec preg_match_all
    Par tit_oune dans le forum Langage
    Réponses: 6
    Dernier message: 18/05/2006, 23h28
  3. Expressions régulières avec variable
    Par killprog dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/04/2006, 17h03
  4. Expression réguliére avec CHECK
    Par BRAUKRIS dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/09/2005, 17h38
  5. Expression régulière avec "|"
    Par YanK dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/07/2005, 15h09

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