Linux में tr (translate) कमांड standard input से टेक्स्ट पढ़ता है, टेक्स्ट में कुछ संशोधन करता है, और फिर इसे standard output पर भेजता है। यह लेख बताता है और दिखाता है कि आप इसका क्यों और कैसे उपयोग कर सकते हैं।
tr कमांड सिंटैक्स
कमांड का उपयोग करने के लिए आपको जिस सिंटैक्स की आवश्यकता होगी वह यहाँ है:
tr OPTIONS SET1 [SET2]
ध्यान दें कि:
- OPTIONS नीचे दी गई तालिका से विकल्पों की सूची होनी चाहिए
- SET1 में कैरेक्टर्स को SET2 में संबंधित स्थिति में कैरेक्टर्स से बदला जाएगा
- ये वैकल्पिक हैं – कुछ OPTIONS अनुवाद करने में सक्षम हैं, इसलिए दोनों SETs आवश्यक नहीं हैं।
- आप प्रोसेस किए जा रहे टेक्स्ट की कमी देखेंगे – यह मानक रीडायरेक्शन का उपयोग करके सप्लाई किया जाता है – नीचे दिए गए उदाहरणों में इस पर अधिक।
यहाँ उपलब्ध OPTIONS हैं – सीधे यूजर मैनुअल से:
| OPTIONS | |
|---|---|
| -c | SET1 के पूरक का उपयोग करें |
| -d | SET1 में कैरेक्टर्स हटाएं, अनुवाद न करें |
| -s | अंतिम निर्दिष्ट SET में सूचीबद्ध दोहराए गए कैरेक्टर के प्रत्येक अनुक्रम को उस कैरेक्टर की एकल घटना से बदलें |
| -t | पहले, SET1 को SET2 की लंबाई तक छोटा करें |
यदि आपको SETs में नई लाइन और टैब जैसे विशेष कैरेक्टर्स को बदलने या हटाने की आवश्यकता है, तो आप निम्न अनुक्रमों का उपयोग कर सकते हैं:
| व्याख्या किया गया अनुक्रम | विशेष कैरेक्टर |
|---|---|
| \NNN | ऑक्टल मान NNN वाला कैरेक्टर (1 से 3 ऑक्टल अंक) |
| \\ | बैकस्लैश |
| \b | बैकस्पेस |
| \n | नई लाइन |
| \r | रिटर्न |
| \t | हॉरिजॉन्टल टैब |
| [:alnum:] | सभी अक्षर और अंक |
| [:alpha:] | सभी अक्षर |
| [:blank:] | सभी हॉरिजॉन्टल व्हाइटस्पेस |
| [:digit:] | सभी अंक |
| [:lower:] | सभी लोअरकेस अक्षर |
| [:space:] | सभी हॉरिजॉन्टल या वर्टिकल व्हाइटस्पेस |
| [:upper:] | सभी अपरकेस अक्षर |
मैंने ऊपर केवल कुछ आमतौर पर उपयोग किए जाने वाले विकल्प/अनुक्रम शामिल किए हैं (क्योंकि काफी कुछ हैं)। आप कमांड विकल्पों की पूरी सूची यूजर मैनुअल में देख सकते हैं, जिसे चलाकर पाया जा सकता है:
man tr
tr कमांड उदाहरण
यहाँ tr कमांड का उपयोग करने के कुछ उदाहरण हैं।
ये केवल उदाहरण हैं; आप अपने वांछित परिणाम प्राप्त करने के लिए विकल्पों और अनुक्रमों को मिक्स-एंड-मैच कर सकते हैं।
कैरेक्टर्स हटाना
नीचे का उदाहरण एक स्ट्रिंग से निर्दिष्ट कैरेक्टर्स को हटाता है। echo कमांड का आउटपुट पाइप किया जाता है tr कमांड को।
यही तरीका है जिससे tr कमांड को वह टेक्स्ट मिलता है जिसे आप अनुवाद करना चाहते हैं – इसे पाइपिंग या रीडायरेक्शन के माध्यम से standard input के रूप में सप्लाई किया जाना चाहिए।
echo "axbxcxdx" | tr -d 'x'
ऊपर, -d विकल्प tr को echo कमांड के आउटपुट से कैरेक्टर x को हटाने का निर्देश देता है।
यह वापस करेगा:
abcd
लोअरकेस से अपरकेस
नीचे का उदाहरण अपर/लोअर व्याख्या किए गए अनुक्रमों का उपयोग करके सभी लोअरकेस कैरेक्टर्स को अपरकेस कैरेक्टर्स से बदलता है:
echo "aBcDeFg" | tr '[:lower:]' '[:upper:]'
यह आउटपुट देगा:
ABCDEFG
कैरेक्टर्स बदलना
tr शायद सबसे अधिक स्ट्रिंग में कैरेक्टर्स को बदलने के लिए उपयोग किया जाता है – उदाहरण के लिए, व्हाइटस्पेस को डैश से बदलना:
echo "frogs and fish" | tr '[:blank:]' '-'
जो आउटपुट देगा:
frogs-and-fish
यह उदाहरण दो SETs का उपयोग करता है – पहला सेट व्हाइट/ब्लैंक स्पेस (यानी स्पेस टैब्स) के लिए पहचानकर्ता रखता है, दूसरा डैश रखता है – इसलिए व्हाइटस्पेस को डैश से बदल दिया जाता है (SET2 SET1 को बदल रहा है)।
यह वेबसाइट पर अपलोड के लिए फ़ाइल नाम जनरेट करते समय उपयोगी हो सकता है और यह सुनिश्चित करने के लिए कि उन फ़ाइल नामों में कोई स्पेस नहीं है।
एकाधिक कैरेक्टर्स बदलना
पिछले उदाहरण में, प्रत्येक सेट में केवल एक कैरेक्टर होता है। एक साथ कई प्रतिस्थापन करने के लिए कई कैरेक्टर्स सप्लाई किए जा सकते हैं:
echo "frogs and fish" | tr 'sf' 'SF'
जो आउटपुट देगा:
FrogS and FiSh
जैसा कि आप देख सकते हैं, पहले में संबंधित अक्षरों को दूसरे से बदल दिया गया था।
दोहराए गए कैरेक्टर्स हटाना
नीचे, टेक्स्ट से अनावश्यक दोहराए गए व्हाइटस्पेस को हटाया जाता है:
echo 'Absolutely spaced out' | tr -s '[:space:]'
जो आउटपुट देगा:
Absolutely spaced out
[:blank:] पहचानकर्ता का उपयोग -s विकल्प के साथ दोहराए गए व्हाइटस्पेस की पहचान करने और हटाने के लिए किया गया था।