এটি 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