Jika sebuah file memiliki akhiran garis CR-LF gaya DOS / Windows, maka jika Anda melihatnya menggunakan alat berbasis Unix Anda akan melihat karakter CR ('\ r') di akhir setiap baris.
Perintah ini:
grep -l '^M$' filename
akan mencetak filename
jika file berisi satu atau lebih baris dengan ujung garis bergaya Windows, dan tidak akan mencetak apa pun jika tidak. Kecuali bahwa ^M
harus menjadi karakter carriage return literal, biasanya dimasukkan di terminal dengan mengetik Ctrl+ Vdiikuti oleh Enter
(atau Ctrl+ Vdan kemudian Ctrl+ M). Bash shell memungkinkan Anda menulis carriage return secara literal seperti $'\r'
( didokumentasikan di sini ), sehingga Anda dapat menulis:
grep -l $'\r$' filename
Kerang lain mungkin menyediakan fitur serupa.
Anda dapat menggunakan alat lain sebagai gantinya:
awk '/\r$/ { exit(1) }' filename
Ini akan keluar dengan status 1
(pengaturan $?
ke 1
) jika file tersebut berisi ujung garis gaya Windows, dan dengan status 0
jika tidak, menjadikannya berguna dalam if
pernyataan shell (perhatikan kurangnya [
tanda kurung ]
):
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
File dapat berisi campuran akhiran gaya Unix dan gaya Windows. Aku menduga di sini bahwa Anda ingin mendeteksi file yang memiliki setiap Windows gaya akhir baris.