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

Scripts/Batch Discussion :

Gestion de lignes vide avec la commande sed [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut Gestion de lignes vide avec la commande sed
    Salut

    J'ai la version 3.59 de la commande sed.

    "%#problems1%" et "%#problems2%" pointent vers deux fichiers txt (les guillemets sont là pour régler le problème des espaces dans les chemins).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    call %_commands%\sed\sed.exe "/^$/d" "%#problems%">"%#problems2%"
    C'est quand même pas compliqué non?

    Eh bah si !

    Au lieu de virer les lignes vides et de rebalancer le tout sur le fichier "%#problems2%", il rebalance tout AVEC les lignes vides -___-

    Pfff...

    Je précise que les lignes sont bien vides (pas d'espace), et affichent [CR][LF] dans Notepad++...

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut
    Bon apparemment il est tout naze mon .exe, il fait rien.

    J'ai réussi à chopper une version 4, mais faut l'installer, hors le principe de mon batch c'est de fournir les commandes et qu'il se débrouille avec.

    J'ai donc extrait le contenu du setup avec Universal Extractor, et j'ai tout copié dans le répertoire de mon batch.

    Mais ça ne change rien, ça refuse toutjours de virer les lignes vides !

    O__o

  3. #3
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    salut,

    la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "/^$/d" espace.txt > sans_espace.txt
    fonctionne bien, j'utilise la version 4.2 de SED
    essayes le contraire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -n "/./p" espace.txt >sans_espace.txt
    ou bien upgrade ta commande

    sinon, tu peux aussi utiliser la boucle FOR elle supprimera toutes les lignes vides de ton fichier

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut
    Je viens de remarquer que j'ai une version win32, mais qu'il y a des version DOS. Serait-ce l'explication quant au malfonctionnement?

    Où puis-je télécharger une version DOS, tous les liens que donne google sont mort...

    Et comment faire pour virer des lignes vides avec une boucle for?

  5. #5
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par DeVit Voir le message
    Et comment faire pour virer des lignes vides avec une boucle for?
    C'est le comportement par défaut d'une boucle FOR, elle ignore les lignes vides lors du parcours... Tu vas donc t'en sortir avec un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type NUL>%fichier2%
    for /F "tokens=* delims=" %%i in ('type %fichier1%') do (
      echo %%i>>%fichier2%
    )
    (Pas testé, j'ai écris ça à l'arrache).
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  6. #6
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par Mac LAK Voir le message
    C'est le comportement par défaut d'une boucle FOR, elle ignore les lignes vides lors du parcours... Tu vas donc t'en sortir avec un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    type NUL>%fichier2%
    for /F "tokens=* delims=" %%i in ('type %fichier1%') do (
      echo %%i>>%fichier2%
    )
    (Pas testé, j'ai écris ça à l'arrache).
    t'es trop rapide pour moi

  7. #7
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    1er question: depuis ma signature
    2eme question: depuis l'option la rechercher du forum

  8. #8
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par DeVit Voir le message
    Bon apparemment il est tout naze mon .exe, il fait rien.

    J'ai réussi à chopper une version 4, mais faut l'installer, hors le principe de mon batch c'est de fournir les commandes et qu'il se débrouille avec.

    J'ai donc extrait le contenu du setup avec Universal Extractor, et j'ai tout copié dans le répertoire de mon batch.

    Mais ça ne change rien, ça refuse toutjours de virer les lignes vides !

    O__o
    une autre solution,

    utiliser FINDSTR avec ses RegExp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    findstr /vir "^$" espace.txt > sans_espace.txt

  9. #9
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut
    Nan, perdu les gars

    Vous avez oublié qu'en copiant les lignes "pleines" du fichier "problems.txt" vers un autre fichier, via une boucle for, on perds les caractères spéciaux !

    C'est de ma faute, j'ai oublié de relier ce topic à celui-ci.

    utiliser FINDSTR avec ses RegExp
    Du coup même problème, puisqu'on tente de copier les lignes contenant des caractères spéciaux...

  10. #10
    Membre Expert
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Par défaut
    Citation Envoyé par DeVit Voir le message

    Vous avez oublié qu'en copiant les lignes "pleines" du fichier "problems.txt" vers un autre fichier, via une boucle for, on perds les caractères spéciaux !
    sincèrement, j'ai pas compris,..tu veux virer les lignes vides ou pas..si c'est ça alors une boucle FOR peux bien faire ça..si tu as trouvé un problème donne nous une partie de ton fichier avec_espaces.txt

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 102
    Par défaut
    Oui, je veux virer les lignes vides d'un fichier, qui contient :
    - des lignes vides
    - et des lignes contenant des chemins avec caractères spéciaux que je me suis fait suer à obtenir via une astuce avec la commande "dir"

    ... sans avoir à bouger les lignes pleines dans un autre fichier, sous peine de perdre les caractères spéciaux !

    Donc en gros il me faut simplement une commande qui daigne fonctionner -_- et qui aura pour fonction de supprimer les lignes vides du fichier (et rien d'autre).

    edit : la version 4.2 de sed, je l'ai téléchargée sur le site que tu as en signature, et elle ne marche pas chez moi !

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

Discussions similaires

  1. remplacer une ligne contenant / avec la commande sed
    Par GoldenEyes dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 11/09/2009, 18h38
  2. Supprimer les lignes vides avec Notepad++
    Par Monstros Velu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 25/04/2009, 01h16
  3. Gestion des lignes vides avant/après une liste
    Par Invité dans le forum Mise en forme
    Réponses: 4
    Dernier message: 28/08/2007, 16h25
  4. Afficher les lignes désirées avec la commande awk
    Par Olivier Regnier dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 16/06/2007, 20h58
  5. Problème avec la commande sed
    Par JUSTIN Loïc dans le forum Linux
    Réponses: 2
    Dernier message: 05/09/2006, 10h17

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