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

  1. #21
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Ok les petits 0 sont partis !!
    en fait ca n'a pas ajouté des 0 sinon que ca a copier le dernier caractere du 90000....c'es bien ça?
    Aller Bonne soirée !!!
    Et merci encore

  2. #22
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    Citation Envoyé par ldiaz Voir le message
    Ok les petits 0 sont partis !!
    en fait ca n'a pas ajouté des 0 sinon que ca a copier le dernier caractere du 90000....c'es bien ça?
    Aller Bonne soirée !!!
    Et merci encore
    du moins c'est l'analyse que j'en fais
    bonne soirée!

  3. #23
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Re salut.
    J'ai detecter un cas que j'avais pas encore vu avant..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    000000008 650   L $$aGeneral y miscelánea0;4001
    Il existe des ligne 650 avec 2 valeurs separées par des ; et comme tu peux voir, la segonde valeur ne se change pas avec le sed.. Y'a un moyen de dire a sed que y'a des lignes avec une valeur et d'autres avec 2 valeurs??

  4. #24
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    Hello,

    Quel comportement est attendu dans le cas ou il y'a 2 valeurs?

    Dans le cas ou l'un des chiffres doit valider le nombre recherché et que les 2 nombres soient remplacés:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/[0-9]\{9\} 650   L $$a\(56[0-9]\{,\}\|[0-9]\{,\};56[0-9]\{,\}\)/{G;s/^\(.* $$a\)[0-9]\{,\}\(\|;[0-9]\{,\}\)\(.*\)\(\n\)$/\1Ciencias biomédicas, Estudios aplicados\3\4\1GodSaveTheQueen\3/g}' test.txt
    testé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    000000008 650   L $$a4001;56000 $$byo
    000000008 650   L $$a56000;4001 $$bou
    000000008 650   L $$a4001
    000000008 650   L $$a56000
    000000008 650   L $$a56000;4001 
    000000008 650   L $$a4001;56000

  5. #25
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    si y'a 2 valeurs, je devrais remplacer les codes par sa correspondance, exemple:

    dans ce cas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    000000008 650   L $$aGeneral y miscelánea0;4001
    000000008 650   L $$aGeneral and miscellaneus0;4001
    On devrait avoir ceci:

    000000008 650 L $$aGeneral y miscelánea0;Quimica
    000000008 650 L $$aGeneral and miscellaneus0;CHemistery

  6. #26
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    avec ceci ça devrait le faire (fait avec 4001 et les même données de test). J'ai fait une petite correction de bord au passage

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed '/[0-9]\{9\} 650   L $$a\(40[0-9]\{0,2\}\( \|;\|$\)\|[0-9]\{,\};40[0-9]\{0,2\}\( \|$\)\)/{G;s/^\(.* $$a.*\)40[0-9]\{0,2\}\(.*\)\(\n\)$/\1Quimica\2\3\1Chemistry\2/g}' test.txt

  7. #27
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    je pige pas ta derniere commande... (enfin comme les autres aussi jajajaja)
    mais j'ai testé et ca fait rien...
    Par exemple si je test dans un fichier avec ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    000000008 650   L $$aGeneral y miscelánea0;4001
    000000008 650   L $$aGeneral and miscellaneus0;4001
    ca reste tel que...

    Je fais ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #sed -i '/[0-9]\{9\} 650   L $$a\(40[0-9]\{0,2\}\( \|;\|$\)\|[0-9]\{,\};40[0-9]\{0,2\}\( \|$\)\)/{G;s/^\(.* $$a.*\)40[0-9]\{0,2\}\(.*\)\(\n\)$/\1Quimica\2\3\1Chemistry\2/g}' luis.dat

  8. #28
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    Hmm ici on commence à atteindre les limites du possible pour sed, vu que dans ton cas tu cherches à effectuer un changement sur une ligne qui a déja été dupliquée

    Avec ton exemple, le script que l'on a effectué jusqu'à maintenant modifié pour l'occasion donnerait
    000000008 650 L $$aGeneral y miscelánea0;Quimica
    000000008 650 L $$aGeneral y miscelánea0;Chemistry
    000000008 650 L $$aGeneral and miscellaneus0;Quimica
    000000008 650 L $$aGeneral and miscellaneus0;Chemistry
    car pour chaque ligne qu'il rencontre il va en créer deux

  9. #29
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    a oui c'est vrai
    donc ca colle pas...

    Bon je vais me debrouiller avec l'excel d'origine pour separer les valeurs..Ca devrait le faire.
    Merci encore pour toute ton aide..

    Ciao

  10. #30
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Hello
    ok j'ai resolu l'histoire avec l'excel et ensuite grace a tes commandes je suis arrivé a un beau resultat.
    J'ai pourtant un autre doute.

    Comment je peux effacer ces lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    000000001 008   L 100211s9999\\\\xx\\\\\\t\\\\\000\0\spa\d
    000000002 008   L 100211s9999\\\\xx\\\\\\p\\\\\000\0\eng\d
    000000003 008   L 100211s9999\\\\xx\\\\\\m\\\\\000\0\fre\d
    000000004 008   L 100211s9999\\\\xx\\\\\\t\\\\\000\0\dut\d
    Comme tu vois la ligne est presque la meme mais y'a quelques differences, donc j'ai tenté avec ceci:

    sed -i '/[0-9]\{9\} 008 L .*/d' fichier.dat
    mais ça marche pas...t'as une idée?

  11. #31
    Membre éprouvé Avatar de exodev
    Inscrit en
    Septembre 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2009
    Messages : 201
    Par défaut
    Hello,

    A première vue (je ne suis malheureusement pas sous linux pour tester actuellement ) je dirais qu'il manque des espaces dans le pattern de recherche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 008   L .*/d' fichier.dat
    Sinon un bon moyen de tester les regex avec sed est d'utiliser l'option -n couplé avec la commande "p". Cela permet de voir quels champs sont sélectionnés par ton patron de recherche.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n '/searched-pattern/p' fichier.dat
    imprimera uniquement les lignes satisfaisant searched-pattern

  12. #32
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut
    grace a ton truc pour imprimer, j'ai reussit a isoler le code qui imprime ce que je veux degager:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 008/d' file.dat
    Merci

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

    Exodev tu te souviens de ces commandes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 650   L $$a44[0-9]\{4\}/{G;s/^\(.* $$a\)[0-9]\{5\}\(.*\)\(\n\)$/\1Instrumentación\2\3\1Instrumentation\2/g}'
    Tu m'avais passé pour changer un code en texte dans des champs...dans un fichiers avec des registres.
    Alors j'ai remarqué un probleme. Lorsque je cré le fichier avec openoffice, au debut c'est un excel et je le transforme en CSV...avec ISO 8859 15 / EURO
    Ce qui me donne ceci dans le fichier:

    Tu vois les accents sont sauvegardé, et lorsque je charge ce fichier dans oracle les accents se voient parfait.
    Par contre, lorsque j'applique les connandes SED, certaines font que les accents deviennent ceci:

    Et la c'est la cata car les accents se voient fatal sur le web.

    J'ai remarqué que ça le fait pas avec toutes les commandes SED, par exemple celle ne provoque pas de changement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 650   L $$a01[0-9]\{4\}/{G;s/^\(.* $$a\)[0-9]\{5\}\(.*\)\(\n\)$/\1Carbón, lignito y turba\2\3\1Coal, lignite and peat\2/g}'

    et celle ci oui:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i '/[0-9]\{9\} 650   L $$a22[0-9]\{4\}/{G;s/^\(.* $$a\)[0-9]\{5\}\(.*\)\(\n\)$/\1Tecnología de reactores\2\3\1Nuclear reactor technology\2/g}'
    T'as une idée de l'origine?
    D'avance merci

  14. #34
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    Salut a tous
    j'ai remarqué que si j'enleve les accents des strings que je rajoute, ca ne le fais plus...
    exemple si je remplace ca:

    pas ca:

    Ca ne touche plus aux autres accents...
    Comment je pourrais remplacer les accents alors? par l'equivalent ascii?
    Comment je peux faire ça?

  15. #35
    Rédacteur/Modérateur
    Avatar de Winnt
    Homme Profil pro
    budget et contrôle de gestion
    Inscrit en
    Décembre 2006
    Messages
    1 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France

    Informations professionnelles :
    Activité : budget et contrôle de gestion
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 978
    Par défaut
    Salut,

    La commande tr est la pour cela.
    Bien sûr il convient de lire le man.
    Winnt
    Merci de lire les règles du forum LaTeX et Qu'est ce qu'un ECM ?.
    N'hésitez pas à parcourir la FAQ la réponse y est peut-être déjà.
    Pensez au bouton si votre problème est résolu.


    C'est en Linuxant qu'on devient .... geek
    Et c'est en LateXant qu'on devient flemmard
    Mon blog tout neuf.
    Articles : présentation de la distribution Gentoo, Les index sous LaTeX et leur personnalisation.

  16. #36
    Membre éclairé
    Inscrit en
    Avril 2006
    Messages
    702
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 702
    Par défaut
    ok resolu avec ceci:

    iconv --from-code=UTF-8 --to-code=ISO-8859-15 ./revistas1.mrk_aleph_sec.dat -o luis.mrk_aleph_sec.dat

    Merci a tous

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

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, 20h19
  2. Ajouter mot a chaque fin de ligne
    Par Darkarcadius dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 28/10/2007, 15h22
  3. Réponses: 13
    Dernier message: 25/07/2007, 21h03
  4. ajouter une chaine de caractere en fin de ligne
    Par parano dans le forum Langage
    Réponses: 2
    Dernier message: 05/04/2007, 19h42
  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, 17h06

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