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 :

ajouter en fin de ligne


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut ajouter en fin de ligne
    Bonjour a tous
    dans un fichier ascii j'ai des registres...Chaque registres se compose de plusieurs lignes avec une borne de debut et de fin.
    Dans chaque registre j'ai cette ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    000000002 260   L $$aMADRID $$b JUNTA DE ENERGIA NUCLEAR$$c1983
    Je voudrais ajouter de façon automatique a toutes les lignes du fichier ceci:
    ":" comme dernier caractere du champs $$a
    et "," comme dernier caractere du champs $$b

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    000000002 260   L $$aMADRID: $$b JUNTA DE ENERGIA NUCLEAR,$$c1983
    Petite info le chiffre: 000000002 c'est l'id du registre...ca s'incremente

    qqu'un sait comment faire ca??

    D'avance merci

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i 's/\($a.*\)\ $$b/\1:\ $$b/g;s/\($b.*\)$$c/\1,$$c/g' fichier
    donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    000000002 260   L $$aMADRID: $$b JUNTA DE ENERGIA NUCLEAR,$$c1983
    000000002 260   L $$aMADRID: $$b JUNTA DE ENERGIA NUCLEAR,$$c1983
    000000002 260   L $$aMADRID: $$b JUNTA DE ENERGIA NUCLEAR,$$c1983
    000000002 260   L $$aMADRID: $$b JUNTA DE ENERGIA NUCLEAR,$$c1983

  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
    alors attend je crois que j'ai oublié de preciser qqu chose, dans le fichier les autres lignes ressemblent a ceci:
    Tu vois, il faut seulement appliquer le sed que t'as envoyer aux ligne qui contiennent 260...pas les autres...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    000000001 250   L $$a1 ED
    000000001 260   L $$aMADRID $$b JUNTA DE ENERGIA NUCLEAR$$c1977
    000000001 300   L $$a144 P. 9 FIGS. 105 REFS.
    000000001 340   L $$aPAPEL
    Pardon de pas le dire de suite.

  4. #4
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    suffit de conditionner avec /260/commande_sed
    comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/260/s/\($a.*\)\ $$b/\1:\ $$b/g;/260/s/\($b.*\)$$c/\1,$$c/g' fichier

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    ok ca marche, ca met :: au lieu de : mais ca c'est pas grave vue que je peux facilement faire un search/replace...donc c'est cool.

    Dans la meme lignée, je cherche a degager une ligne entiere...
    j'ai trouvé ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/patern_a_effacer/d' /tmp/data.txt > /tmp/output.data.txt
    Le probleme c'est que j'ai l'ID devant quichange a chaque ligne:
    Tu vois je voudrais virer la ligne du 042 $$a1
    Donc si je suis l'exemple du sed je devrais faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/000000002 042   L $$a1/d' /tmp/data.txt > /tmp/output.data.txt
    Le porbleme c'est que le registre suivant commencera par 00000003 et non pas 0000002.
    Je dois faire une boucle??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    000000002 041   L $$aESPAÑOL
    000000002 042   L $$a1
    000000002 088   L $$aJ.E.N. 550
    Le resultat devrait etre ca au final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    000000002 041   L $$aESPAÑOL
    000000002 088   L $$aJ.E.N. 550
    D'avance merci

  6. #6
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 042   L $$a1/d' /tmp/data.txt

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

Discussions similaires

  1. Ajouter retour à la ligne à chaque fin de ligne
    Par creative69 dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2008, 19h19
  2. Ajouter mot a chaque fin de ligne
    Par Darkarcadius dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 28/10/2007, 14h22
  3. Réponses: 13
    Dernier message: 25/07/2007, 20h03
  4. ajouter une chaine de caractere en fin de ligne
    Par parano dans le forum Langage
    Réponses: 2
    Dernier message: 05/04/2007, 18h42
  5. [Unix KSH] Ajout caractère fin de ligne dans fichier
    Par -COil- dans le forum Autres langages
    Réponses: 1
    Dernier message: 04/05/2006, 16h06

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