ASCII वर्ण 0 से 177 (अष्ट) तक की सीमा के वर्ण हैं ।
किसी फ़ाइल में इस श्रेणी के बाहर के वर्णों को हटाने के लिए, उपयोग करें
LC_ALL=C tr -dc '\0-\177' <file >newfile
tr
आदेश एक उपयोगिता है कि एकल पात्रों पर काम करता है , या तो, अन्य एकल वर्ण (लिप्यंतरण) के साथ उन्हें प्रतिस्थापन उन्हें हटाने, या एक ही चरित्र में एक ही चरित्र का रन संपीड़ित।
ऊपर दिए गए कमांड से file
संशोधित सामग्री को पढ़ा और लिखा जाएगा newfile
। यूटिलिटी डिलीट करेक्टर (उन्हें ट्रांसफर करने के बजाए) -d
करने का विकल्प दिया गया tr
है, और -c
यह दिए गए अंतराल (अंदर के बजाय) के बाहर के कैरेक्टर पर विचार करता है।
LC_ALL=C
यह सुनिश्चित करता है कि प्रत्येक बाइट मान एक मान्य वर्ण बनाता है। इसके बिना, कुछ tr
कार्यान्वयन निरस्त हो जाएंगे यदि उन्हें बाइट्स के अनुक्रम मिले जो कि लोकेल के चरित्र एन्कोडिंग में मान्य वर्ण नहीं बनाते हैं।
संशोधित फ़ाइल के साथ मूल फ़ाइल को बदलने के लिए, उपयोग करें
LC_ALL=C tr -dc '\0-\177' <file >newfile &&
mv newfile file
यह tr
सफलतापूर्वक पूरी हो जाने के बाद पुरानी फ़ाइल के नाम पर नई फ़ाइल का नाम बदल देता है । यदि tr
सफलतापूर्वक पूरा नहीं होता है, तो या तो यह मूल फ़ाइल को नहीं पढ़ सकता है या नई फ़ाइल को नहीं लिख सकता है, मूल फ़ाइल को अपरिवर्तित छोड़ दिया जाएगा।
वैकल्पिक रूप से, मूल फ़ाइल के मेटा डेटा (अनुमतियाँ आदि) का अधिक से अधिक संरक्षण करना, उपयोग करना
cp file tmpfile &&
LC_ALL=C tr -dc '\0-\177' <tmpfile >file &&
rm tmpfile