यदि किसी फ़ाइल में DOS / Windows- शैली CR-LF लाइन एंडिंग है, तो यदि आप इसे यूनिक्स-आधारित टूल का उपयोग करके देखते हैं तो आपको प्रत्येक पंक्ति के अंत में CR ('r') वर्ण दिखाई देंगे।
यह आदेश:
grep -l '^M$' filename
प्रिंट होगा filename
अगर फ़ाइल Windows शैली लाइन अंत के साथ एक या अधिक पंक्तियों में शामिल है, और कुछ भी नहीं प्रिंट होगा अगर ऐसा नहीं होता। सिवाय इसके कि ^M
एक शाब्दिक गाड़ी वापसी चरित्र, आम तौर पर टाइपिंग द्वारा टर्मिनल में प्रवेश किया हो गया है Ctrl+ Vके बाद Enter
(या Ctrl+ Vऔर फिर Ctrl+ M)। बैश शेल आपको एक शाब्दिक कैरिज रिटर्न लिखने के लिए अनुमति देता है $'\r'
( यहाँ दस्तावेज के रूप में ), ताकि आप लिख सकें:
grep -l $'\r$' filename
अन्य गोले एक समान सुविधा प्रदान कर सकते हैं।
आप इसके बजाय किसी अन्य टूल का उपयोग कर सकते हैं:
awk '/\r$/ { exit(1) }' filename
इस स्थिति के साथ बाहर निकल जाएगा 1
(सेटिंग $?
करने के लिए 1
) यदि फ़ाइल किसी भी Windows शैली लाइन अंत होता है, और की स्थिति के साथ 0
करता है, तो यह नहीं है, यह एक खोल में उपयोगी बनाने if
बयान (की कमी ध्यान दें [
कोष्ठक ]
):
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
एक फ़ाइल में यूनिक्स-शैली और विंडोज-स्टाइल लाइन एंडिंग्स का मिश्रण हो सकता है। मैं यहाँ यह मान रहा हूँ कि आप ऐसी फ़ाइलों का पता लगाना चाहते हैं जिनमें कोई भी विंडोज-स्टाइल लाइन अंत है।