Wie überprüfe ich das Zeilenende einer Textdatei, um festzustellen, ob es sich um ein Unix- oder DOS-Format handelt?
Ich muss die Textdatei in das DOS - Format konvertieren (Ende jeder Zeile mit0x0d0x0a
, eher, als0x0a
nur), wenn die Datei im Unix-Format vorliegt (0x0a
nur am Ende jeder Zeile).
Ich kann es konvertieren (sed 's/$/^M/'
), aber nicht, wie man das Zeilenendezeichen einer Datei erkennt.
Ich benutze ksh.
Jede Hilfe wäre dankbar.
[Update]: Irgendwie habe ich es herausgefunden, und hier ist mein ksh-Skript, um die Prüfung durchzuführen.
[qiangxu@host:/my/folder]# cat eol_check.ksh
#!/usr/bin/ksh
if ! head -1 $1 |grep ^M$ >/dev/null 2>&1; then
echo UNIX
else
echo DOS
fi
Im obigen Skript^M
sollte eingefügt werden invi
mitCtrl-V
undCtrl-M
.
Möchten Sie wissen, ob es eine bessere Methode gibt.