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 :

[bash] problème affichage pendant mon script


Sujet :

Shell et commandes GNU

  1. #1
    Membre très actif
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 99
    Par défaut [bash] problème affichage pendant mon script
    Bonjour à tous,

    je rencontre un souci que je n'arrive pas à comprendre, en effet j'ai un fichier test :

    1
    2
    3



    #================================================
    #DS_DRIVER_NAME=oracle-11.2.0.4
    DS_DRIVER_NAME=oracle-12.1.0.2
    #DS_DRIVER_NAME=oracle-12.2.0.1
    En fait je souhaite supprimer les 3 dernière lignes pour les remplacer ensuite, donc j'ai penser a faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    > $test_tmp
     
    tac $fic > $test_tmp
    sed -i '1,3d' $test_tmp
    tac $test_tmp > $fic
    sauf que ca allait pas et j'ai remarquer que au moment de l'éxécution d ela commande tac , le fichier devient ceci :

    #DS_DRIVER_NAME=oracle-11.2.0.4DS_DRIVER_NAME=oracle-12.1.0.2
    #DS_DRIVER_NAME=oracle-12.2.0.1
    #================================================



    3
    2
    1
    Comment cela se fait il ?

  2. #2
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 120
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    Citation Envoyé par Bensljul Voir le message
    Comment cela se fait-il ?
    C'est parce que j'ai l'impression qu'il te manque un "retour-chariot" inséré à la fin de ta dernière ligne dans le fichier de test, comme ça :

    Nom : bidon.png
Affichages : 106
Taille : 8,4 Ko
    (le trait vertical matérialise le "point d'insertion")

    auquel cas l'affichage devient parfaitement correct :
    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $ tac bidon 
    #DS_DRIVER_NAME=oracle-12.2.0.1
    DS_DRIVER_NAME=oracle-12.1.0.2
    #DS_DRIVER_NAME=oracle-11.2.0.4
    #================================================
     
     
     
    3
    2
    1

    EDIT : c'est pas clair tout ça :
    1- j'ai bien remarqué qu'en utilisant les balises QUOTE, la citation concernant le fichier se terminait au bout de la dernière ligne et que rajouter des retours-chariot ne servait à rien.
    2- en faisant ainsi j'ai eu un résultat qui ressemble au tien, mais pas exactement ; je mets les différences en gras :
    ta sortie (raccourcie à ces 3 lignes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #DS_DRIVER_NAME=oracle-11.2.0.4DS_DRIVER_NAME=oracle-12.1.0.2
    #DS_DRIVER_NAME=oracle-12.2.0.1
    #================================================
    la mienne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #DS_DRIVER_NAME=oracle-12.2.0.1 DS_DRIVER_NAME=oracle-12.1.0.2
    #DS_DRIVER_NAME=oracle-11.2.0.4
    #================================================
    /EDIT

    Bref, avec un retour-chariot dans le fichier (comme on le voit sur mon image), j'ai ça, qui semble pas mal :
    Code bash : 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
    $ tac bidon > /tmp/bid.tmp
    $ cat /tmp/bid.tmp 
    #DS_DRIVER_NAME=oracle-12.2.0.1
    DS_DRIVER_NAME=oracle-12.1.0.2
    #DS_DRIVER_NAME=oracle-11.2.0.4
    #================================================
     
     
     
    3
    2
    1
    $ sed -i '1,3d' /tmp/bid.tmp 
    $ tac /tmp/bid.tmp > bid2
    $ cat bid2
    1
    2
    3
     
     
     
    #================================================
    $

  3. #3
    Membre très actif
    Homme Profil pro
    Intérimaire
    Inscrit en
    Mai 2017
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Intérimaire

    Informations forums :
    Inscription : Mai 2017
    Messages : 99
    Par défaut
    Ah d'accord il faut laisser la dernière ligne vide du coup ^^

    je n'y avais pas penser du tout XD

    Merci

  4. #4
    Expert confirmé Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 041
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 041
    Par défaut
    salut,

    en bonus tu peux probablement essayer une commande du genre head -n-3 fichier plutôt que de retourner le fichier, couper trois lignes avec sed, retourner le fichier à nouveau... t'as le même résultat en une seule commande.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 120
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 120
    Par défaut
    Citation Envoyé par BufferBob Voir le message
    tu peux probablement essayer une commande du genre head -n-3 fichier
    "utiliser" !

    Testé et approuvé,

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

Discussions similaires

  1. Requete SQL BETWEEN fonctionne dans le bash mais pas dans mon script?
    Par ssc37 dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 09/03/2009, 11h01
  2. [BASH]Problème création d' un script
    Par crasho007 dans le forum Linux
    Réponses: 2
    Dernier message: 05/11/2007, 15h34
  3. [MySQL] Problème après le transfert de mon script sur internet
    Par LordBob dans le forum PHP & Base de données
    Réponses: 22
    Dernier message: 26/01/2006, 21h02
  4. [Mail] Problème avec mon script d'envoi de mail
    Par leroivert dans le forum Langage
    Réponses: 18
    Dernier message: 02/12/2005, 00h26
  5. [MySQL] Problème dans mon script de pagination
    Par speedylol dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/11/2005, 19h37

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