Bir dosyada DOS / Windows tarzı CR-LF satır sonları varsa, o zaman Unix tabanlı bir araç kullanarak bakarsanız, her satırın sonunda CR ('\ r') karakterleri görürsünüz.
Bu komut:
grep -l '^M$' filename
yazdırılacaktır filename
dosyası Windows tarzı satır sonları ile bir veya birden fazla satır içeriyorsa ve bunları yapmazsa hiçbir şey yazdırılır. Bunun dışında ^M
, genellikle yazarak terminali girilen bir hazır taşıyıcı dönüş karakteri olmak zorunda Ctrl+ Vardından Enter
(veya Ctrl+ Vve sonra Ctrl+ M). Bash kabuğu, değişmez bir satır başı $'\r'
( burada belgelenen ) gibi yazmanızı sağlar , böylece:
grep -l $'\r$' filename
Diğer kabuklar da benzer bir özellik sağlayabilir.
Bunun yerine başka bir araç kullanabilirsiniz:
awk '/\r$/ { exit(1) }' filename
Bu durumuyla çıkılacak 1
(ayar $?
için 1
dosya herhangi bir Windows tarzı satır sonları içeriyorsa) ve durumuyla 0
bir kabuk içinde yararlı hale yapmazsa if
açıklamada (eksikliğini not [
parantez ]
):
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
Bir dosya, Unix ve Windows tarzı çizgi sonlarının bir karışımını içerebilir. Sana sahip dosyaları algılamak istiyorum burada tahmin ediyorum herhangi Windows stili satır sonları.