Formatage de fichier texte

Résolu
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

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

Merci :-)
A voir également:

29 réponses

lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

file fichier
ne te conviens pas?
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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

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

Posez votre question
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
ah ok merci a vous ;-)
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Affiche tes fichiers avec "cat -A" s'il te plait.
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
cat -A Document1.txt
thierry^M$
test ^M$
ascii^M$

dos2unix Document1.txt && cat -A Document1.txt
thierry$
test $
ascii$
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Affiche maintenant tes commandes sur tes fichiers et le résultat à l'écran, merci.
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
cat -A Document1.txt && grep '^M' Document1.txt
thierry^M$
test ^M$
ascii^M$
^M$
^M$


Etonnant !
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Essaye avec "grep -E" (ou egrep), pour voir ;-\
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   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
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
cat -A Document1.txt && grep -E '^M' Document1.txt ;echo $?
thierry^M$
test ^M$
ascii^M$
^M$
^M$
1

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

RIEN !
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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