Wenn eine Datei CR-LF-Zeilenenden im DOS- / Windows-Stil enthält, werden bei der Anzeige mit einem Unix-basierten Tool am Ende jeder Zeile CR-Zeichen ('\ r') angezeigt.
Dieser Befehl:
grep -l '^M$' filename
wird gedruckt, filename
wenn die Datei eine oder mehrere Zeilen mit Windows-ähnlichen Zeilenenden enthält, und es wird nichts gedruckt, wenn dies nicht der Fall ist. Das ^M
muss jedoch ein Zeilenumbruchzeichen sein, das normalerweise in das Terminal eingegeben wird, indem Sie Ctrl+ Vgefolgt von Enter
(oder Ctrl+ Vund dann Ctrl+ M) eingeben . Mit der Bash-Shell können Sie einen wörtlichen Wagenrücklauf als $'\r'
( hier dokumentiert ) schreiben, sodass Sie Folgendes schreiben können:
grep -l $'\r$' filename
Andere Schalen bieten möglicherweise ein ähnliches Merkmal.
Sie können stattdessen ein anderes Tool verwenden:
awk '/\r$/ { exit(1) }' filename
Dies wird mit dem Status 1
(Einstellung $?
auf 1
) beendet, wenn die Datei Zeilenenden im Windows-Stil enthält, und mit dem Status, 0
wenn dies nicht der Fall ist, was sie in einer Shell- if
Anweisung nützlich macht (beachten Sie das Fehlen von [
Klammern ]
):
if awk '/\r$/ { exit(1) }' filename ; then
echo filename has Unix-style line endings
else
echo filename has at least one Windows-style line ending
fi
Eine Datei kann eine Mischung aus Zeilenenden im Unix- und Windows-Stil enthalten. Ich gehe davon aus, dass hier Sie Dateien erkennen mögen, haben alle im Windows-Stil Zeilenende.