Nếu một tệp có các kết thúc dòng CR-LF kiểu DOS / Windows, thì nếu bạn xem nó bằng công cụ dựa trên Unix, bạn sẽ thấy các ký tự CR ('\ r') ở cuối mỗi dòng.
Lệnh này:
grep -l '^M$' filename
sẽ in filenamenếu tệp chứa một hoặc nhiều dòng có kết thúc dòng kiểu Windows và sẽ không in gì nếu không có. Ngoại trừ việc ^Mphải là một ký tự trở lại vận chuyển theo nghĩa đen, thường được nhập vào thiết bị đầu cuối bằng cách gõ Ctrl+ Vtheo sau Enter
(hoặc Ctrl+ Vvà sau đó Ctrl+ M). Shell bash cho phép bạn viết trở lại vận chuyển theo nghĩa đen như $'\r'( tài liệu ở đây ), vì vậy bạn có thể viết:
grep -l $'\r$' filename
Các vỏ khác có thể cung cấp một tính năng tương tự.
Bạn có thể sử dụng một công cụ khác thay thế:
awk '/\r$/ { exit(1) }' filename
Điều này sẽ thoát với trạng thái 1(cài đặt $?thành 1) nếu tệp chứa bất kỳ kết thúc dòng kiểu Windows nào và với trạng thái 0nếu không, làm cho nó hữu ích trong ifcâu lệnh shell (lưu ý thiếu [dấu ngoặc ]):
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
Một tệp có thể chứa hỗn hợp các kết thúc dòng kiểu Unix và Windows. Tôi giả sử ở đây rằng bạn muốn phát hiện các tệp có bất kỳ kết thúc dòng kiểu Windows nào .