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 :

Afficher remplacer les fins de lignes CRLF par LF sous AIX


Sujet :

Shell et commandes POSIX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut Afficher remplacer les fins de lignes CRLF par LF sous AIX
    Bonjour,

    Je ne suis pas du tout expert en shell mais je dois trouver une solution à mon problème :
    je souhaite remplacer les fins de lignes d'un fichier toto.txt sous DOS (fin de ligne : CRLF ) par LF .Donc oui je cherche à convertir un fichier DOD en UNIX.
    J'ai essayé les commandes de type DOS2UNIX mais ça n'existe pas chez moi .
    J'ai aussi essayé :et aussi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed 's/\r$//' toto.txt>tata.txt
    mais les fichiers restent toujours en DOS .

    Du coup j'ai l'impression qu'avec le sed , il ne voit pas les fins de lignes .Faut-il passer par une commande pôur afficher les fins de ligne avant de demander de les remplacer ? Bref je suis perdu

    Merci si vous pouvez m'aider

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Vu sur wikipedia ; je n'ai pas testé.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tr -d '\r' < file > file2
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    perl -i -p -e 's/\r//' file
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed -i -e 's/\r//' file

  3. #3
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    L'option -i pour sed et perl n'est pas POSIX, donc inconnue sur AIX.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    merci pour vos retour.J'ai essayé toutes ces commandes , mais quand j'ouvre le fichier apres exécution de la commande il est toujours sous DOS.
    Je ne comprends pas car la commande passe bien , mais on dirait qu'il ne détecte pas les fin de lignes DOS (CRLF) pour les remplacer par fin de ligne UNIX (LF).

    Merci

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Tu regardes bien le fichier après modification (nommé file2 dans la première commande) ?
    Comment l'affiches-tu ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Oui , c'est bien le file2 que j'ouvre ouisqu'il contient les modifications en sortie . Par contre pour verifier j'ouvre le File2 avec notepad++ , puis j'affiche les caratères fin de ligne et c'est là que je vois CRLF .

  7. #7
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Es-tu certain que ce n'est pas Notepad++ qui reconvertit ton fichier en format DOS lorsqu'il l'ouvre ?
    Ou le logiciel que tu utilises pour rapatrier ton fichier d'AIX ?
    Vérifie bien dans les paramétrages.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Merci al1.
    J'ai eu un doute sur le notepad++ , mais j'ai fait le test : en ouvrant un fichier unix sous notepad++ en bas à droite il affiche que c'est un fichier de type unix et quand on affiche les fins de lignes on voit que c'est du LF .
    Et quand j'exécute ma commande avec le SED ou le TR sur le serveur AIX , je ne transfère pas le fichier modifié vers DOS.

  9. #9
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 280
    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 280
    Points : 12 729
    Points
    12 729
    Par défaut
    Bonjour,
    Réessaye les mêmes commandes mais en remplaçant '\r' par \015 (qui est la valeur octal) car en principe '\r' est bien reconnu en gnu sed et gnu tr mais pour les autres version, c'est beaucoup moins sur.
    Cordialement.

  10. #10
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Testé sur AIX 7.1 avec \r. Le résultat est celui attendu.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Bonjour,
    je suis sur AIX 6.1 et l'option -i n'existe pas.
    On m'a parlé d'une commande iconv .Cette commande peut elle convertir des fichiers DOS en UNIX ? Un exemple ?

  12. #12
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Citation Envoyé par doudou8mc Voir le message
    je suis sur AIX 6.1 et l'option -i n'existe pas.
    Il me semble que je l'avais déjà dit...
    Citation Envoyé par doudou8mc Voir le message
    On m'a parlé d'une commande iconv .Cette commande peut elle convertir des fichiers DOS en UNIX ?
    iconv va convertir le jeu de caractères utilisé dans le fichier, pas la terminaison des lignes.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Merci Al1,
    en effet , iconv modifie bien l'encodage mais pas les fins de lignes.Pour moi transformer un fichier DOS en UNIX c'est forcément en substituant les fins de lignes CRLF par LF.
    Est ce que ICONV peut faire l'affaire ?

  14. #14
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Il y a quelques années, j'avais eu des problèmes du même genre (avec Solaris et AIX) et beaucoup de difficultés à lui faire comprendre les 'CR' à base de backslash '\r'.

    Essaie la commande suivante, en tapant, entre les apostrophes 'ctrl-v ctrl-m' (pour obtenir un '^M')

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tr -d '^M' < file > file2
    Attention Cette commande supprime tous les ctrl-m, pas seulement ceux en fin de ligne!
    (en conséquence, si tu la mets dans un script, il faut au moins éviter de passer le script sur lui-même!)

    Rq: pour vérifier le résultat, il peut être plus rapide d'utiliser (à la place de NotePad++) la commande:

    qui permet de voir les bytes du fichier sous forme de caractères.

    Exemple (sous OSX):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $ echo '^M' | od -c
    0000000   \r  \n                                                        
    0000002
     
    $ echo '^M' | tr -d '^M' | od -c
    0000000   \n                                                            
    0000001
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $ (echo 'ligne terminée par return^M'; echo 'ligne terminée par line feed') | od -c
    0000000    l   i   g   n   e       t   e   r   m   i   n   é  **   e    
    0000020    p   a   r       r   e   t   u   r   n  \r  \n   l   i   g   n
    0000040    e       t   e   r   m   i   n   é  **   e       p   a   r    
    0000060    l   i   n   e       f   e   e   d  \n                        
    0000072
     
    $ (echo 'ligne terminée par return^M'; echo 'ligne terminée par line feed') | tr -d '^M' | od -c
    0000000    l   i   g   n   e       t   e   r   m   i   n   é  **   e    
    0000020    p   a   r       r   e   t   u   r   n  \n   l   i   g   n   e
    0000040        t   e   r   m   i   n   é  **   e       p   a   r       l
    0000060    i   n   e       f   e   e   d  \n                            
    0000071

  15. #15
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Citation Envoyé par doudou8mc Voir le message
    Est ce que ICONV peut faire l'affaire ?
    Tu as une commande ICONV sur ton système AIX ?
    Je ne la connais pas ; que dit man à son propos ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  16. #16
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    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 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Il me semble que la commande "iconv" (en minuscules) sert à transformer les caractères encodés en UTF8 en caractères encodés en ISO8859-1 (ou d'autres transformations du même acabit), mais pas à transformer les caractères de fin de ligne.

  17. #17
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    @jack-ft : Je répondais au message précédent, en tenant bien compte de la différence de casse :
    Citation Envoyé par doudou8mc Voir le message
    en effet , iconv modifie bien l'encodage mais pas les fins de lignes.Pour moi transformer un fichier DOS en UNIX c'est forcément en substituant les fins de lignes CRLF par LF.
    Est ce que ICONV peut faire l'affaire ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Bonjour ,
    merci des retours .J'ai essayé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tr -d '^M' < file > file2
    Mais ça ne donne rien : un fichier de sortie est bien crée mais toujours au format DOS .

    @al1 : je connais iconv et à ma connaissance ça ne converti pas des fichiers DOS à UNIX , mais vu que tu insiste sur iconv , je me suis dis que tu avais une solution de contournement

    Merci

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 169
    Points : 76
    Points
    76
    Par défaut
    Pour recentrer le contexte :
    Je cherche à convertir un fichier DOS à UNIX sur AIX 6.1 .
    J'ai essayé plusieurs solutions : sed , tr ,dos2unix....
    La plupart ne sont pas prises en charge sous AIX 6.1 .

    Merci

  20. #20
    Expert éminent sénior Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 280
    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 280
    Points : 12 729
    Points
    12 729
    Par défaut
    Voici une autre solution avec sed (qui ne retirera que les '\r' de fin de ligne):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s/$(printf '\r')\$//" fichier1 >fichier2
    Il faut juste avoir un printf inclus en tant que built-in dans ton shell ou dans /bin (comme sous solaris - Oui, je n'ai pas d'AIX sous la main pour tester )

    Pour retirer tous les '\r' sans exception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sed "s/$(printf '\r')//g" fichier1 >fichier2
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Remplacer les X des lignes par le nom de Colonne
    Par progscoubi dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 06/03/2014, 11h40
  2. remplacer les retour de ligne par <br> dans une chaine?
    Par cortex024 dans le forum Langage
    Réponses: 2
    Dernier message: 03/12/2006, 17h22
  3. Remplacer les fins de ligne
    Par papyreno dans le forum Langage
    Réponses: 9
    Dernier message: 12/05/2006, 14h55
  4. Réponses: 16
    Dernier message: 22/03/2006, 11h11
  5. [C#] Remplacer les boutons d'un DataGrid par une image
    Par PascalL dans le forum Windows Forms
    Réponses: 17
    Dernier message: 04/04/2005, 16h07

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