अगर मैं एक लाइन के रूप में कर रहा हूँ:
Thhiisss iisss mmyyy nameeee
मैं इसे प्रिंट करना चाहता हूं:
This is my name
इसके लिए यूनिक्स कमांड क्या है?
अगर मैं एक लाइन के रूप में कर रहा हूँ:
Thhiisss iisss mmyyy nameeee
मैं इसे प्रिंट करना चाहता हूं:
This is my name
इसके लिए यूनिक्स कमांड क्या है?
जवाबों:
GNU सिस्टम पर आपको उपयोग करने की आवश्यकता होगी sed
या यदि आपका स्थान मल्टीबाइट वर्णों का उपयोग करता है ( जैसा कि जिमीज बताता है ) क्योंकि GNU tr
केवल एक चरित्र प्रति बाइट का संदर्भ दे सकता है। ASCII लोकेल में आप सभी डुप्लिकेट को हटा सकते हैं tr
जैसे / w :
LC_ALL=C tr -s '\0-\255' <input
इसलिए...
echo Thhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\0-\255'
... प्रिंट ...
This is my name
आप इसे अपने लक्ष्य के अनुसार सीमा के अनुसार चुनिंदा तरीके से भी कर सकते हैं:
echo TThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '\101-\132'
... या ...
echo TTTThhiisss iisss mmyyy nameeee|
LC_ALL=C tr -s '[:upper:]'
... जो एक ही काम करते हैं, और जो दोनों प्रिंट करते हैं:
Thhiisss iisss mmyyy nameeee
... या उपयोग [:punct:]
, [:digit:]
, [:lower:]
, [:alpha:]
या आप चाहते हैं जो कुछ भी। तुम भी चयन w / -c
तो नकारात्मक कर सकते हैं ...
echo 'TTTThhiisss iisss mmyyy nameeee' |
LC_ALL=C tr -cs '[:upper:]'
... प्रिंट ...
TTTThis is my name