Linux और Unix सिस्टम में, tr एक कमांड-लाइन उपयोगिता है जो अनुवाद करती है, मिटाती है, और दोहराए गए वर्णों को “निचोड़ती” है – वास्तव में, tr का अर्थ “translate” है। यह गाइड उदाहरणों के साथ Linux में tr कमांड का उपयोग कैसे करें, बताता है। इसका उपयोग दोहराए गए वर्णों को हटाने, लोअरकेस को अपरकेस में बदलने, और वर्णों को बुनियादी रूप से बदलने और हटाने जैसे संचालन के लिए किया जा सकता है। इसका उपयोग अक्सर पाइपिंग के माध्यम से अन्य कमांड के साथ संयोजन में किया जाता है।
Linux हमारे द्वारा दैनिक आधार पर उपयोग की जाने वाली अधिकांश तकनीक के पीछे मूल कर्नेल/ऑपरेटिंग सिस्टम कोर है, जिसमें Android शामिल है – वह प्लेटफॉर्म जो हम में से कई के मोबाइल फोन पर होगा। यह ओपन-सोर्स है और आसानी से कॉन्फ़िगर करने योग्य है।
tr कमांड का उपयोग कैसे करें
tr कमांड चलाने का सिंटैक्स निम्नानुसार है, जहां SET1 में वर्णों को SET2 में वर्णों में अनुवादित किया जाता है:
tr OPTION... SET1 [SET2]
tr कमांड वर्णों के दो सेट स्वीकार करता है (आमतौर पर समान लंबाई)। यह फिर पहले सेट के वर्णों को दूसरे सेट के संबंधित वर्णों से बदल देता है। इस परिदृश्य में, एक SET वर्णों की एक स्ट्रिंग है और इसमें विशेष बैकस्लैश-एस्केप्ड वर्ण शामिल हैं।
उदाहरण
वर्णों की एक श्रृंखला का उपयोग करना
यदि आप चाहें तो वर्ण वर्गों के बजाय श्रृंखलाओं का भी उपयोग कर सकते हैं:
echo 'hello' | tr 'a-z' 'A-Z'
दूसरी तरफ बदलने के लिए, बस सेट के स्थानों को स्विच करें।
केस बदलें
अपरकेस को लोअरकेस में या इसके विपरीत बदलना tr कमांड के सबसे सामान्य उपयोग के मामलों में से एक है।
[:lower:] सभी लोअरकेस वर्णों से मेल खाता है, और [:upper:] सभी अपरकेस वर्णों से मेल खाता है।
echo 'Hello' | tr '[:lower:]' '[:upper:]' HELLO
खाली लाइनें हटाएं
खाली लाइनों को हटाने के लिए, आपको दोहराए गए न्यूलाइन वर्णों को “निचोड़ना” होगा:
tr -s '\n' < input.txt > output.txt
ऊपर, हम रीडायरेक्शन प्रतीक का उपयोग कर रहे हैं, जो तब कमांड के आउटपुट को output.txt में लिखता है।
सभी गैर-संख्यात्मक वर्ण हटाएं
निम्न कमांड सभी गैर-संख्यात्मक वर्णों को हटा देता है:
echo "The account number is 10879358" | tr -cd [:digit:]
[:digit:] सभी अंक वर्णों के लिए खड़ा है। -c विकल्प का उपयोग करके, कमांड उन वर्णों को हटा देता है जो संख्यात्मक नहीं हैं। बाद का आउटपुट इस तरह दिखेगा:
10879358
$PATH निर्देशिकाओं को नई लाइन पर प्रिंट करें
$PATH पर्यावरण चर निर्देशिकाओं की एक सूची है (कॉलन द्वारा सीमांकित) जो शेल को बताती है कि जब आप कमांड टाइप करते हैं तो निष्पादन योग्य फ़ाइलों की तलाश में किन निर्देशिकाओं को देखना है। प्रत्येक निर्देशिका को एक अलग नई लाइन पर प्रिंट करने के लिए, हमें कॉलन (:) से मेल खाने और फिर इसे नई लाइन कमांड से बदलने की आवश्यकता है:
echo $PATH | tr ':' '\n' /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/games /usr/local/games /snap/bin
प्रत्येक शब्द को नई लाइन पर रखें
ऐसा करने के लिए, हमें सभी वर्णों (जो अल्फा-न्यूमेरिक नहीं हैं) से मेल खाने और फिर उन्हें नई लाइन से बदलने की आवश्यकता है:
echo 'Linux is the best operating system in the world' | tr -cs '[:alnum:]'
आउटपुट है:
Linux is the best operating system in the world
वर्ण बदलें
यदि हम मानक इनपुट (‘coding’) से वर्णों को दूसरे सेट के संबंधित वर्णों से बदलना चाहते हैं।
echo 'coding' | tr 'co' 'hi'
“c” की प्रत्येक घटना को “h” से बदल दिया जाता है, और “o” को “i” से, परिणाम के साथ:
hiding
वर्ण सेट को वर्ण श्रृंखलाओं का उपयोग करके भी परिभाषित किया जा सकता है। उदाहरण के लिए, लिखने के बजाय:
echo 'coding' | tr 'abcd' 'wxyz'
आप उपयोग कर सकते हैं:
echo 'coding' | tr 'a-d' 'w-z' yozing
जब -c विकल्प का उपयोग किया जाता है, तो tr SET1 में नहीं होने वाले सभी वर्णों को बदल देता है।
निम्न उदाहरण में, “li” को छोड़कर सभी वर्णों को दूसरे सेट के अंतिम वर्ण से बदल दिया जाएगा:
$ echo 'coding' | tr -c 'cod' 'xy' liyyyiyyy
नई लाइन के बिना स्ट्रिंग को इको करने के लिए, -n विकल्प का उपयोग करें।
-d विकल्प tr को SET1 में निर्दिष्ट वर्णों को हटाने के लिए कहता है। जब आप इसे निचोड़े बिना करना चाहते हैं, तो आपको केवल एक सेट निर्दिष्ट करना चाहिए।
नीचे दी गई कमांड l, I, and z वर्णों को हटा देगी:
echo 'Linuxize' | tr -d 'liz'