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 POSIX Discussion :

Convertir Dos en Unix


Sujet :

Shell et commandes POSIX

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 60
    Points
    60
    Par défaut Convertir Dos en Unix
    Bonjour à Tous

    En shell je souhaite convertir des fichiers Dos en Unix.
    Avant tout je vérifie si le fichier est au format Unix
    S'il est au format unix je ne fais rien, sinon je le convertie en Unix.

    Qui a une solution à me proposer ?

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Il existe le programme en ligne de commande dos2unix qui fait ça très simplement. A voir s'il existe pour ton OS et l'installer si besoin.

    Si en plus tu doit tester le contenu du fichier avant de lancer cette commande, je pense que tu sera perdant en perf (sinon à coup de grep ça devrait être faisable).

    Cordialement,
    Idriss

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    ou avec sed

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/^M//g' fichier > fichierresultat
    le ^M est obtenu en tapant CTRL+V puis ENTER

  4. #4
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    A choisir entre le sed et le dos2unix, il vaut mieux prendre le dos2unix, car selon le besoin, la suppression du ^M ne suffit pas, on peut ausi avoir besoin de convertir la locale du fichier.
    De plus, pour être propre en sed, même si le cas est très très rare, il ne faudrait supprimer que le ^M en fin de ligne
    Cordialement.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 60
    Points
    60
    Par défaut
    Merci à tous
    J'ai testé avec le code ci-dessous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    dos2unix  $FichierA > $FichierB
    Mais j'ai toutes les lignes du FichierA qui s'affichent directement sur la console.
    En plus de ça le script reste bloquée avec cette commande.
    Je voudrais savoir s'il faut exécuter cette commande avec des options particulières.

    PS: J'ai exactement le même problème avec la commande sed

    Merci d'avance

  6. #6
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Je ne vois qu'une possibilité, ta variable $FichierA n'existe pas.
    Cordialement.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 60
    Points
    60
    Par défaut
    Cette variable est bien créée.
    En gros tous les fichiers que je vais traiter sont au format Dos/ windows
    Alors que mon script ne traite que le fichier au format UNIX
    Je cherche une autre solution pour contourner ce problème.

  8. #8
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 276
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 276
    Points : 12 717
    Points
    12 717
    Par défaut
    Je ne sais pas, chez moi cela fonctionne et cela ne bloque pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ file fich.txt
    fich.txt: ASCII text, with CRLF line terminators
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat -A fich.txt
    titi^M$
    toto^M$
    tata^M$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ dos2unix fich.txt
    dos2unix: converting file fich.txt to UNIX format ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ file fich.txt
    fich.txt: ASCII text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat -A fich.txt
    titi$
    toto$
    tata$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ unix2dos fich.txt
    unix2dos: converting file fich.txt to DOS format ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ file fich.txt
    fich.txt: ASCII text, with CRLF line terminators
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat -A fich.txt
    titi^M$
    toto^M$
    tata^M$
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ sed -i 's/^M$//g' fich.txt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ file fich.txt
    fich.txt: ASCII text
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cat -A fich.txt
    titi$
    toto$
    tata$
    Cordialement.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 60
    Points
    60
    Par défaut
    Voilà un peu ce que j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FichierA= ${RepertoireA}
    FichierB= ${RepertoireA}
     
    sed -ie  's/[ctrl+v][ctrl+m]//' $FichierA
    sed -ie  's/[ctrl+v][ctrl+m]//' $FichierB
    Comme résultat j'ai le contenu du fichier A qui s’affiche sur la console et mon script se comporte de la même façon avec la commande dos2unix

  10. #10
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 60
    Points
    60
    Par défaut
    Finalement ça marche mais qu'avec des fichiers de petites tailles. Il fallait rediriger la sortie de la commande dos2unix pour éviter l'affichage sur la console

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
      dos2unix  $FichierA>/dev/null 2>&1
      dos2unix  $FichierB >/dev/null 2>&1

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mai 2012
    Messages : 42
    Points : 60
    Points
    60
    Par défaut
    Finalement ça marche avec ce code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    cat fichier | sed -e "1d" > fichier2

  12. #12
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Ton sed ne fait que supprimer la première ligne

    Et le cat est superflus : sed <...> fichier.

    Idriss

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

Discussions similaires

  1. Commande pour convertir un fichier DOS en UniX
    Par doudou8mc dans le forum Shell et commandes GNU
    Réponses: 13
    Dernier message: 11/06/2015, 16h19
  2. [Batch] Convertir fichier csv unix en dos
    Par faulk dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 21/07/2010, 10h51
  3. [Eclipse 3.0.1] Convertir des sources Dos en Unix
    Par Bicnic dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 22/09/2009, 16h38
  4. [Shell] Convertir format DOS vers Unix
    Par Neuromancien2 dans le forum Linux
    Réponses: 1
    Dernier message: 08/02/2008, 18h07
  5. [langage] fichier DOS et unix, retour chariot Mac unix
    Par Kinethe dans le forum Langage
    Réponses: 5
    Dernier message: 25/10/2004, 14h05

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