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 :

Retour à la ligne perdu après insertion texte


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Par défaut Retour à la ligne perdu après insertion texte
    Bonjour à tous.

    J'ai un fichier sql qui contient deux lignes (des fois plus), et je dois écrire en début et à la fin de ce fichier

    Or, quand je fais cela, je perds ma mise en page initiale, et mes lignes de code sql sont mises les unes à la suite des autres, ce qui empêche la bonne exécution.

    Voilà mon fichier lance_test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    Voilà mon script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "
    SET PAGESIZE 60\n"`cat lance_test` > lance_test
        echo "\n\n"
        echo "spool off;
    commit;
    exit;" >> lance_test
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SET PAGESIZE 60
    update from titi where tata=tutu; update from pipi where papa=pupu;
    spool off;
    commit;
    exit;
    Comment faire pour garder le retour à la ligne de mon fichier d'origine?

    Merci!

  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,

    Avec "sed" ?

    Listing répertoire :
    Contenu fichier plop :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat plop 
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    Contenu script.sed :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $ cat script.sed 
    1 {
    i SET PAGESIZE 60
    }
    $ {
    a spool off;\
    commit;\
    exit;
    }
    Syntaxe (le -i.bak permet de faire une copie de sauvegarde, si toutefois ta version de sed le permet) :
    $ sed -i.bak -f script.sed plop
    Contenu du fichier "plop" après traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ cat plop 
    SET PAGESIZE 60
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    spool off;
    commit;
    exit;
    Listing répertoire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ls
    plop  plop.bak  script.sed
    La copie de sauvegarde est intacte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ cat plop.bak 
    update from titi where tata=tutu;
    update from pipi where papa=pupu;

  3. #3
    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
    Sinon, avec ta méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    $ cat lance_test 
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
     
    $ echo -e "SET PAGESIZE 60\n$(cat lance_test)" > lance_test && echo -e "spool off;\ncommit;\nexit;" >> lance_test 
     
    $ cat lance_test 
    SET PAGESIZE 60
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    spool off;
    commit;
    exit;
     
    $

  4. #4
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Par défaut
    Alors, merci beaucoup pour tes réponses, mais voilà mon souci!
    Je suis sous AIX, et l'option -e d'echo ne semble pas exister, tout comme l'option -i de sed

  5. #5
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Par défaut
    Au temps pour moi, si la solution avec sed n'est pas adaptée, celle avec echo fonctionne très bien, même sans l'option -e!!
    Merci beaucoup!!!

    (mais peux tu m'expliquer ce qui fait que je garde mes retour à la ligne?)

  6. #6
    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 nyarlath Voir le message
    (mais peux tu m'expliquer ce qui fait que je garde mes retour à la ligne?)
    Le fait de mettre la substitution de commande "$(commande)" à l'intérieur des quotes :

    A L'intérieur des quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ echo -e "SET PAGESIZE 60\n$(cat lance_test)"
    SET PAGESIZE 60
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    A l'extérieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ echo -e "SET PAGESIZE 60\n"$(cat lance_test)
    SET PAGESIZE 60
    update from titi where tata=tutu; update from pipi where papa=pupu;

  7. #7
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 103
    Par défaut
    Citation Envoyé par nyarlath Voir le message
    Bonjour à tous.

    J'ai un fichier sql qui contient deux lignes (des fois plus), et je dois écrire en début et à la fin de ce fichier

    Or, quand je fais cela, je perds ma mise en page initiale, et mes lignes de code sql sont mises les unes à la suite des autres, ce qui empêche la bonne exécution.

    Voilà mon fichier lance_test:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    Voilà mon script:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    echo "
    SET PAGESIZE 60\n"`cat lance_test` > lance_test
        echo "\n\n"
        echo "spool off;
    commit;
    exit;" >> lance_test
    et le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SET PAGESIZE 60
    update from titi where tata=tutu; update from pipi where papa=pupu;
    spool off;
    commit;
    exit;
    Comment faire pour garder le retour à la ligne de mon fichier d'origine?

    Merci!
    Moi, je crois que j'aurais tout bêtement fait un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { echo "SET PAGESIZE 60;"; cat lance_test; echo "spool off;"; echo "commit;"; echo "exit;" ; } > lance_test_bis
    Non?

  8. #8
    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,

    Citation Envoyé par jack-ft Voir le message
    Moi, je crois que j'aurais tout bêtement fait un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { echo "SET PAGESIZE 60;"; cat lance_test; echo "spool off;"; echo "commit;"; echo "exit;" ; } > lance_test_bis
    Non?
    Oui aussi

    Et l'ancêtre de "sed", présent sur tous les Unixes il me semble, je veux parler de "ed" ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $ cat lance_test 
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
     
    $ ed -s lance_test << EOF
    1i
    SET PAGESIZE 60
    .
    \$a       
    spool off;
    commit;
    exit;
    .
    w
    EOF
     
     
    $ cat lance_test 
    SET PAGESIZE 60
    update from titi where tata=tutu;
    update from pipi where papa=pupu;
    spool off;
    commit;
    exit;
     
    $

  9. #9
    Membre averti
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mai 2012
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2012
    Messages : 28
    Par défaut
    Citation Envoyé par zipe31 Voir le message
    Salut,


    Oui aussi

    Et l'ancêtre de "sed", présent sur tous les Unixes il me semble, je veux parler de "ed" ???
    Ah ben mince alors, jamais pensé à celui-là!!!

    Merci pour toutes vos réponses!

    Jack-ft, ça marche aussi évidemment...
    Des fois, j'ai des difficultés à aller au plus simple...

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/04/2007, 23h21
  2. [XSLT] retour à la ligne dans un fichier texte
    Par SylMat dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 22/03/2007, 12h39
  3. [FORM] Retour à la ligne dans un champ texte
    Par visqueu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 19/03/2007, 05h54
  4. Retour à la ligne dans Zone de texte. Via VBA
    Par GuidoBrasletti dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 12h56
  5. retour à la ligne dans un fichier texte
    Par pierrOPSG dans le forum C
    Réponses: 3
    Dernier message: 14/04/2006, 19h04

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