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 :

KSH: Supprimer des lignes vides (sans espaces ni tab) en fin de fichier text


Sujet :

Shell et commandes GNU

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut KSH: Supprimer des lignes vides (sans espaces ni tab) en fin de fichier text
    Bonjour,

    Je suis amené à manipuler un fichier KSH, malgré le fait que je n'aie reçu aucune formation dans ce domaine, peut-être quelqu'un pourrait m'aider?

    Un spool me crée un fichier texte comme suit:

    *debut de mon fichier texte*
    CHAINE 1
    CHAINE 2
    CHAINE 3


    *fin de mon fichier texte*

    Les deux dernières lignes du fichiers sont complètement vides (pas d'espaces ni de tab), il s'agit juste de retours chariots.

    Ensuite je fais un read de ce fichier, et selon la valeur de la ligne (j'utilise des if) je lance divers traitements. Sauf que lorsque il arrive à la ligne vide, j'ai ce message d'erreur:

    /batch/mon.ksh[120]: test: 0403-004 Specify a parameter with this command.

    J'ai pensé utiliser sed ou awk pour supprimer ces lignes, en vain.

    Voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     sqlplus -s ${USRORA} << EOF >> ${sqlreport} @$REP_SQL/mon.sql $monfichiertexte
    EOF
     
    while read script
    do
     
       if [ $script = "CHAINE 1" ]
       then
          #MON TRAITEMENT ICI
       fi
    done < $monfichiertexte
    Help !! Merci !!

  2. #2
    Membre chevronné Avatar de KindPlayer
    Profil pro
    Inscrit en
    Février 2007
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 471
    Par défaut
    teste si la ligne n'est pas vide avant de tester l'egalité avec la chaine

    en bash ca serait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if [ -n $script ]
    then
        suite du traitement avec les autres tests
    En revanche je dirais qu'il y a confusion entre le nom de la variable et l'utilisation que tu sembles en faire. Qu'est censé contenir la variable script?

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Mars 2007
    Messages : 27
    Par défaut
    En mettant le if, j'ai la même erreur. Sauf qu'au lieu de l'avoir n fois (n tests sur la valeur de script), je l'ai une seule fois...

    Quant au nom de la variable, je suis totalement d'accord avec toi: ceux qui ont développé ce ksh étaient des boulets, et maintenant qu'ils ont quitté mon projet, je dois faire avec :s

    PI, script est un nom de table.

  4. #4
    Membre émérite Avatar de BlaireauOne
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    492
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2007
    Messages : 492
    Par défaut
    Entourer $script de double-quotes doit régler le problème.
    En présence de ligne vide, sans ces double-quotes, le shell lit :

    et ne comprend pas alors qu'avec les double-quotes :

    il sera content

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       if [ "$script" = "CHAINE 1" ]
       then
          #MON TRAITEMENT ICI
       fi

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 762
    Par défaut hieroglyphe ;-)
    SED fait cela aussi très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -e :a -e '/^\n*$/N;/\n$/ba' nom_du_fichier
    bon d'accord, les expressions régulières sont difficiles à lire mais...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Supprimer des lignes vides d'un CSV
    Par amine.h dans le forum Langage
    Réponses: 2
    Dernier message: 25/09/2010, 17h40
  2. [RegEx] Supprimer des lignes vides
    Par bigs3232 dans le forum Langage
    Réponses: 14
    Dernier message: 17/04/2010, 00h40
  3. Supprimer des lignes vides dans un label
    Par benjhe dans le forum VB.NET
    Réponses: 3
    Dernier message: 19/12/2007, 08h57
  4. Supprimer des lignes vides
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/11/2007, 19h32
  5. supprimer des lignes vides
    Par Medmidou dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/10/2007, 13h51

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