2011-03-26 22 views
13

रखने के लिए rot13 और tr कमांड का उपयोग करके मैंने 'tr' कमांड के उपयोग के बारे में इंटरनेट पर कई ट्यूटोरियल पढ़े हैं। हालांकि, मैं समझ नहीं पा रहा हूं कि एक शेल स्क्रिप्ट के साथ एक ईमेल पता एन्क्रिप्ट करने के तरीके को rot13 का उपयोग कर वर्णों को स्थानांतरित करें। क्या कोई कोई लिंक या उदाहरण दे सकता है?एन्क्रिप्टेड ईमेल पता

+0

"tr" कमांड ट्यूटोरियल। http://en.wikipedia.org/wiki/Tr_%28Unix%29 –

उत्तर

34
नहीं

यकीन है कि वास्तव में कैसे आप इस का उपयोग करना चाहते हैं, लेकिन यहां आने के लिए एक बुनियादी उदाहरण आप आरंभ है:

echo '[email protected]' | tr 'A-Za-z' 'N-ZA-Mn-za-m' 

यह आसान है, तो आप tr आदेश अपने .bashrc फ़ाइल में thusly उर्फ ​​कर सकते हैं बनाने के लिए:

alias rot13="tr 'A-Za-z' 'N-ZA-Mn-za-m'" 

अब आप कॉल कर सकते हैं:

echo '[email protected]' | rot13 
+0

क्या सेट-2 में एसईटी 1 और एन-जेए-एम के रूप में ए-जेड का उपयोग करना आवश्यक है, इसे किसी अन्य तरीके से उपयोग किया जा सकता है? मेरा मतलब है एजी pzaq set2 –

+4

कोई अन्य संयोजन सड़ांध नहीं होगा ** 13 ** ;-) – nickgrim

+1

इसके अतिरिक्त, यदि आप अंकों को rot13 करना चाहते हैं (जो पारंपरिक rot13 नहीं है, क्योंकि यह केवल अक्षर है), तो आप जोड़ सकते हैं 0-9 एसईटी 1 और 3-90-2 से एसईटी 2 तक। – xizdaqrian

5

रूबी (1.9+)

$ ruby -ne 'print $_.tr("A-Za-z", "N-ZA-Mn-za-m") ' file 

अजगर

$ echo "test" | python -c 'import sys; print sys.stdin.read().encode("rot13")' 
0

tr के लिए एक आदर्श कार्य, वास्तव में। यह आप क्या चाहते हैं करना चाहिए:

tr 'A-Za-z' 'N-ZA-Mn-za-m' 

पहले सेट में प्रत्येक चरित्र दूसरे सेट में इसी चरित्र के साथ प्रतिस्थापित किया जाएगा। जैसे एन, बी के साथ प्रतिस्थापित किया गया, ओ, आदि के साथ प्रतिस्थापित किया गया .. और फिर निचले केस अक्षरों के लिए वही। अन्य सभी पात्र अपरिवर्तित के माध्यम से पारित किया जाएगा।

[ और ] की कमी पर ध्यान दें जहां आप आमतौर पर उनसे अपेक्षा कर सकते हैं। ऐसा इसलिए है क्योंकि tr स्क्वायर ब्रैकेट का शाब्दिक रूप से व्यवहार करता है, न कि श्रेणी अभिव्यक्ति के रूप में। इसलिए, उदाहरण के लिए, tr -d '[A-Z]' पूंजी अक्षरों और वर्ग ब्रैकेट हटा देगा। आप अपने कोष्ठक रखना चाहता है, तो tr -d 'A-Z' का उपयोग करें:

$ echo "foo BAR [baz]" | tr -d '[A-Z]' 
foo baz 
$ echo "foo BAR [baz]" | tr -d 'A-Z' 
foo [baz] 

चरित्र वर्गों के लिए एक ही। जैसे tr -d '[[:lower:]]' शायद एक त्रुटि है, और tr -d '[:lower:]' होना चाहिए।

हालांकि, इस तरह की भाग्यशाली परिस्थितियों में, आप ब्रैकेट को किसी भी तरह से दूर कर सकते हैं! उदाहरण के लिए, tr "[a-z]" "[A-Z]" गलती से काम करता है क्योंकि पहले सेट में स्क्वायर ब्रैकेट को दूसरे सेट से समान वर्ग ब्रैकेट द्वारा प्रतिस्थापित किया जाता है, लेकिन वास्तव में यह एक बुरी आदत है। इसके बजाय tr "a-z" "A-Z" का उपयोग करें। विकिपीडिया पर

संबंधित मुद्दे