এটি GNU বাস্তবায়নের সীমাবদ্ধতা ( 1 , 2 , 3 , 4 , 5 , 6 ) tr
।
এটি বিদেশী , অ-ইংরাজী বা অ-এসকিআইআই অক্ষরকে সমর্থন করে না এমনটি নয়, তবে এটি বহু-বাইট অক্ষরকে সমর্থন করে না।
এই সিরিলিক অক্ষরগুলি ঠিকঠাক হিসাবে বিবেচিত হবে, যদি iso8859-5 (প্রতিটি চরিত্রের একক বাইট) অক্ষর সেট (এবং আপনার লোকেল সেই অক্ষরটি ব্যবহার করছিল) তে লেখা থাকে তবে আপনার সমস্যাটি হ'ল আপনি ইউটিএফ -8 ব্যবহার করছেন যেখানে অ-এএসসিআইআই নেই অক্ষরগুলি 2 বা ততোধিক বাইটে এনকোড করা হয়।
গনুহ এর পেয়েছিলাম একটি পরিকল্পনা (দেখুন এছাড়াও ) সমাধান যে এবং কাজের উপায় বয়সী কিন্তু এখনো।
ফ্রিবিএসডি বা সোলারিসের tr
সমস্যা নেই।
গড় সময়ে, বেশিরভাগ ব্যবহারের ক্ষেত্রে tr
আপনি জিএনইউ সেড বা জিএনইউ অ্যাডকে ব্যবহার করতে পারেন যা মাল্টি-বাইট অক্ষরকে সমর্থন করে।
উদাহরণস্বরূপ, আপনার:
tr -cs '[[:alpha:][:space:]]' ' '
লেখা যেতে পারে:
gsed -E 's/( |[^[:space:][:alpha:]])+/ /'
বা:
gawk -v RS='( |[^[:space:][:alpha:]])+' '{printf "%s", sep $0; sep=" "}'
লোয়ার এবং আপার কেস ( tr '[:upper:]' '[:lower:]'
) এর মধ্যে রূপান্তর করতে :
gsed 's/[[:upper:]]/\l&/g'
(এটি l
ছোট L
নয়, 1
অঙ্ক নয়)।
বা:
gawk '{print tolower($0)}'
বহনযোগ্যতার জন্য, perl
অন্য বিকল্প:
perl -Mopen=locale -pe 's/([^[:space:][:alpha:]]| )+/ /g'
perl -Mopen=locale -pe '$_=lc$_'
যদি আপনি জানেন যে ডেটাটি একটি একক বাইট চরিত্রের সেটটিতে উপস্থাপন করা যায়, তবে আপনি এটি অক্ষরে এটি প্রসেস করতে পারেন:
(export LC_ALL=ru_RU.iso88595
iconv -f utf-8 |
tr -cs '[:alpha:][:space:]' ' ' |
iconv -t utf-8) < Russian-file.utf8