Formatage de fichier texte

Résolu
tlep Messages postés 597 Statut Membre -  
tlep Messages postés 597 Statut Membre -
Bonjour,

Connaissez-vous la commande permettant de savoir si un fichier texte est au format UNIX, PC, ou MAC ?

Merci :-)
Configuration: Windows XP
Firefox 2.0.0.7

29 réponses

  • 1
  • 2
  1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    file fichier
    ne te conviens pas?
    0
  2. tlep Messages postés 597 Statut Membre 118
     
    Si mais je ne connaissais pas, merci ;-)

    Et ca ne fonctionne pas exactement comme attendu:

    file index.php
    index.php: PHP script text

    Ca ne me dit pas si c'est du UNIX, MAC ou PC.

    Je me posais la question parce que les greps fonctionnent mal parfois sur des fichiers formatés PC, et du coup j'applique dos2unix dessus; mais je me demandais si'il existait une commande pour spécifier le type avant.
    0
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Alors teste les fins de ligne de ton fichier avant (le "^M" s'obtient par "CTRL V + CTRL M) :
    [tmpfs]$ grep '^M' fich_DOS.txt >/dev/null
    [tmpfs]$ echo $?
    0
    
    [tmpfs]$ grep '^M' fich_UNIX.txt >/dev/null
    [tmpfs]$ echo $?
    1
    [tmpfs]$
    et traite en fonction du résultat du code retour ;-))
    0
  4. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Ah, d'accord
    en fait tu veux tester si la fin de ligne est
    \n - UNIX
    \r - MAC
    \n\r - WIN

    Alors tu peux faire un script pour tester la fin de ligne
    Si \n Alors UNIX
    etc.

    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tlep Messages postés 597 Statut Membre 118
     
    ah ok merci a vous ;-)
    0
  7. tlep Messages postés 597 Statut Membre 118
     
    Ah ben non ca ne marche pas;
    j'ai fait des tests sur des fichiers en format pc ou unix, grep '^M' fich_DOS.txt >/dev/null et $? renvoie toujours 1.
    J'ai pourtant bien vérifié puisque au format PC size=23: et après dos2unix: size=20.
    Et le grep sur \n ou \r ne renvoie rien

    :-|
    0
  8. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Affiche tes fichiers avec "cat -A" s'il te plait.
    0
  9. tlep Messages postés 597 Statut Membre 118
     
    cat -A Document1.txt
    thierry^M$
    test ^M$
    ascii^M$

    dos2unix Document1.txt && cat -A Document1.txt
    thierry$
    test $
    ascii$
    0
  10. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Pour les fichiers MAC, je te conseille de faire d'abord la conversion de \r en \n ou d'ajouter le \n si tu veux avoir un fichier Win
    0
  11. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Affiche maintenant tes commandes sur tes fichiers et le résultat à l'écran, merci.
    0
  12. tlep Messages postés 597 Statut Membre 118
     
    grep '^M' Document1.txt >/dev/null;echo $?
    1
    stat Document1.txt|grep Size|awk '{print $1$2}'
    Size:27
    dos2unix Document1.txt && grep '^M' Document1.txt >/dev/null;echo $?
    1
    stat Document1.txt|grep Size|awk '{print $1$2}'
    Size:22
    0
  13. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Bon concernant la taille avec "stat", essaie plutôt :
    stat -c 'Size : %s' fichier
    et pour en revenir à ton autre problème, affiche le résultat de :
    cat -A Document1.txt && grep '^M' Document1.txt
    sur le fichier formaté en DOS.
    0
  14. tlep Messages postés 597 Statut Membre 118
     
    cat -A Document1.txt && grep '^M' Document1.txt
    thierry^M$
    test ^M$
    ascii^M$
    ^M$
    ^M$

    Etonnant !
    0
  15. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Essaye avec "grep -E" (ou egrep), pour voir ;-\
    0
  16. tlep Messages postés 597 Statut Membre 118
     
    Je viens de voir un truc intéressant mais ca utilise tr et non grep :
    http://perso.orange.fr/gleu/absfr.tuxfamily.org/abs-2.3-fr/textproc.html
    "Exemple 12-17. Du: Convertit les fichiers text DOS vers UNIX"

    Et le grep ne fonctionne pas sur "\015" :-|
    0
  17. tlep Messages postés 597 Statut Membre 118
     
    cat -A Document1.txt && grep -E '^M' Document1.txt ;echo $?
    thierry^M$
    test ^M$
    ascii^M$
    ^M$
    ^M$
    1

    Pareil :-|
    0
  18. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Fais un grep sans le cat avant pour voir ce qu'il en ressort vraiment...
    0
  19. tlep Messages postés 597 Statut Membre 118
     
    Et apparemment avec sed ca marche aussi :
    sed conversion retours chariots dos crlf unix lf
    0
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      Ben c'est avec "sed" que je fais mes tests depuis ce matin pour convertir mes fichiers ;-))
      0
  20. tlep Messages postés 597 Statut Membre 118
     
    grep -E '^M' Document1.txt

    RIEN !
    0
  21. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Tu peux mettre ton fichier DOS sur Cjoint s'il te plaît que je teste ça chez moi pour déterminer si ça vient du fichier ou d'ailleurs, merci.
    0
  • 1
  • 2