2012-03-27 11 views
9

डेबियन-आधारित वितरण पर, असीमित नामक एक उपयोगिता है जिसका प्रयोग टेक्स्ट में उच्चारण अक्षरों से उच्चारण को हटाने के लिए किया जा सकता है।बैश स्क्रिप्ट (आरएचईएल) में अनैसेंट स्ट्रिंग

मैं रेडहाट डिस्ट्रोज़ पर एक पैकेज ढूंढ रहा था, लेकिन मुझे केवल एक ही मिला जो unac केवल मैनड्रिवा के लिए उपलब्ध था।

मैंने iconv का उपयोग करने की कोशिश की लेकिन ऐसा लगता है कि यह मेरे मामले का समर्थन नहीं करता है।

सर्वश्रेष्ठ, हल्के दृष्टिकोण, बैश स्क्रिप्ट में आसानी से उपयोग करने योग्य क्या है? क्या आइकनवी के लिए कोई गुप्त विकल्प है जो इसकी अनुमति देता है?

+1

[ 'unaccent'] (:

$ echo 'été' | iconv -c -f utf8 -t ascii t 

तुम सिर्फ लहजे निकालना चाहते हैं http://www.nongnu.org/unac/unaccent-man1.en.html) * उच्चारण किए गए अक्षरों को हटा नहीं देता है, लेकिन "इनपुट स्ट्रीम या स्ट्रिंग से उच्चारण [एस] हटाएं" ("été" को बदल दिया गया है "ईटी", नहीं "टी") - इसे [collation] कहा जाता है (https://en.wikipedia.org/wiki/Collation)। क्या आप वास्तव में * अक्षर * हटाना चाहते हैं? – l0b0

+0

आप बिल्कुल सही हैं, मैं उच्चारण को हटाना चाहता हूं, सुधार के लिए धन्यवाद :) (मैंने अभी प्रश्न को ठीक किया है) –

उत्तर

13

यदि आप गैर- ASCII वर्ण को दूर करने के iconv में -c (स्पष्ट) विकल्प का उपयोग कर सकते हैं:

$ echo 'été' | iconv -f utf8 -t ascii//TRANSLIT 
ete 
+0

धन्यवाद, लेकिन जैसा कि @ l0b0 ने देखा, मैं वास्तव में जो चाहता था वह उच्चारण अक्षरों को नहीं निकालना है। क्या आइकनवी या किसी अन्य उपकरण के साथ ऐसा करने का कोई तरीका है? –

+0

सही, अब यह वही है जो मुझे चाहिए, धन्यवाद - {echo 'Příliš žluťoučký kůň úpěl ďábelské ódy' के साथ परीक्षण किया गया। iconv -t 'ASCII // TRANSLIT'} –

+2

ग्रेट समाधान; दुर्भाग्यवश, यह ओएसएक्स पर ठीक से काम नहीं करता है, संभवतः एक बग के कारण ('ओएस एक्स 10.9.2' के रूप में, जो 'जीएनयू libiconv 1.11' के साथ आता है):' echo 'ü' | iconv -f UTF8 -t ASCII // TRANSLIT ''' 'के बजाय' u' उत्पन्न करता है। – mklement0

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