লিনাক্স এবং ইউনিক্স সিস্টেমে, tr একটি কমান্ড-লাইন ইউটিলিটি যা ক্যারেক্টার ট্রান্সলেট, ইরেজ, এবং “scqeeze” (রিপিটেড ক্যারেক্টার সংকুচিত) করে — আসলে tr মানে “translate।” এই গাইডে লিনাক্সে tr কমান্ড ব্যবহারের পদ্ধতি উদাহরণসহ ব্যাখ্যা করা হয়েছে। এটি রিপিটেড ক্যারেক্টার রিমুভ করা, লোয়ারকেসকে আপারকেসে কনভার্ট করা, এবং বেসিক ক্যারেক্টার রিপ্লেস ও রিমুভ করার মতো অপারেশনে ব্যবহার করা হয়। এটি প্রায়শই অন্যান্য কমান্ডের সাথে পাইপিং করে ব্যবহার করা হয়।
লিনাক্স হল আমাদের দিনদিনের প্রযুক্তির অধিকাংশের পেছনের বেসিক কার্নেল/অপারেটিং সিস্টেম کور, যার মধ্যে অ্যান্ড্রয়েড — যে প্ল্যাটফর্মটি আমাদের অধিকাংশের মোবাইল ফোনে আছে। এটি ওপেন-সোর্স এবং সহজে কনফিগারযোগ্য।
tr কমান্ড ব্যবহারের পদ্ধতি
tr কমান্ড চালানোর সিনট্যাক্স নিচের মতো, যেখানে SET1-এ থাকা ক্যারেক্টারগুলো SET2-এ থাকা ক্যারেক্টারদ্বারা ট্রান্সলেট হবে:
tr OPTION... SET1 [SET2]
tr কমান্ড দুটি ক্যারেক্টার সেট এক্সেপ্ট করে (সাধারণত একই দৈর্ঘ্যের)। এটা প্রথম সেটের ক্যারেক্টারগুলো দ্বিতীয় সেটের করেসপন্ডিং ক্যারেক্টারদ্বারা রিপ্লেস করে। এই সিনেরিওতে, একটি SET হল ক্যারেক্টারসহ একটি স্ট্রিং এবং স্পেশাল ব্যাকস্ল্যাশ-এস্কেপড ক্যারেক্টারও ইনক্লুড করে।
উদাহরণ
ক্যারেক্টার রেঞ্জ ব্যবহার করা
আপনি ক্যারেক্টার ক্লাসের বদলে রেঞ্জও ব্যবহার করতে পারেন:
echo 'hello' | tr 'a-z' 'A-Z'
বিপরীত দিক থেকে কনভার্ট করতে সেটগুলোর পজিশন বদলিয়ে দিন।
কেস কনভার্ট করা
আপার কেসকে লোয়ার কেসে বা তার বিপরীতে কনভার্ট করা tr কমান্ডের সবচেয়ে कॉमन ইউজ কেস।
[:lower:] সকল লোয়ার কেস ক্যারেক্টার ম্যাচ করে, এবং [:upper:] সকল আপারকেস ক্যারেক্টার ম্যাচ করে।
echo 'Hello' | tr '[:lower:]' '[:upper:]' HELLO
ব্ল্যাঙ্ক লাইন রিমুভ করা
ব্ল্যাঙ্ক লাইন ডিলিট করতে, আপনাকে রিপিটেড নিউলাইন ক্যারেক্টার “scqeeze” করতে হবে:
tr -s '\n' < input.txt > output.txt
উপরে, আমরা রিডাইরেকশন সিম্বল ব্যবহার করেছি, যা কমান্ডের আউটপুট output.txt-এ লিখে।
সকল নন-নিউমেরিক ক্যারেক্টার রিমুভ করা
নিচের কমান্ড সকল নন-নিউমেরিক ক্যারেক্টার ডিলিট করে:
echo "The account number is 10879358" | tr -cd [:digit:]
[:digit:] হল সকল ডিজিট ক্যারেক্টার। -c অপশন ব্যবহার করে কমান্ড নন-নিউমেরিক ক্যারেক্টারগুলো রিমুভ করে। পরের আউটপুট নিচের মতো দেখাবে:
10879358
$PATH ডিরেক্টরি প্রতিটিকে নতুন লাইনে প্রিন্ট করা
$PATH এনভায়রনমেন্ট ভেরিয়েবল হল ডিরেক্টরির একটি লিস্ট (কোলন ডিলিমিটেড) যা শেলকে বলে কোন ডিরেক্টরিতে এক্সিকিউটেবল ফাইল খুঁজবে যখন আপনি একটি কমান্ড টাইপ করেন। প্রতিটি ডিরেক্টরি আলাদা নতুন লাইনে প্রিন্ট করতে, আমাদের কোলন (:) ম্যাচ করে সেটিকে নিউ লাইন কমান্ড দিয়ে রিপ্লেস করতে হবে:
echo $PATH | tr ':' '\n' /usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /usr/games /usr/local/games /snap/bin
প্রতিটি শব্দকে নতুন লাইনে রাখা
এটি করতে, আমাদের সকল ক্যারেক্টার ম্যাচ করতে হবে (যেগুলো আলফা-নিউমেরিক নয়) এবং সেগুলোক নিউ লাইন দিয়ে রিপ্লেস করতে হবে:
echo 'Linux is the best operating system in the world' | tr -cs '[:alnum:]'
আউটপুট হল:
Linux is the best operating system in the world
ক্যারেক্টার রিপ্লেস করা
আমরা যদি স্ট্যান্ডার্ড ইনপুট থেকে (‘coding’) ক্যারেক্টারগুলো দ্বিতীয় সেটের করেসপন্ডিং ক্যারেক্টারদ্বারা রিপ্লেস করতে চাই।
echo 'coding' | tr 'co' 'hi'
প্রতিটি “c” “h” দিয়ে রিপ্লেস হবে, এবং “o” “i” দিয়ে, ফলাফল:
hiding
ক্যারেক্টার সেট ক্যারেক্টার রেঞ্জ দিয়েও ডিফাইন করা যায়। উদাহরণস্বরূপ, নিচের লিখার বদলে:
echo 'coding' | tr 'abcd' 'wxyz'
আপনি ব্যবহার করতে পারেন:
echo 'coding' | tr 'a-d' 'w-z' yozing
যখন -c অপশন ব্যবহার করা হয়, tr SET1-এ নয় এমন সকল ক্যারেক্টার রিপ্লেস করে।
নিচের উদাহরণে, “li” ছাড়া সকল ক্যারেক্টার দ্বিতীয় সেটের শেষ ক্যারেক্টার দিয়ে রিপ্লেস হবে:
$ echo 'coding' | tr -c 'cod' 'xy' liyyyiyyy
নিউলাইন ছাড়া স্ট্রিং ইকো করতে -n অপশন ব্যবহার করুন।
-d অপশন tr-কে বলে SET1-এ স্পেসিফাইড ক্যারেক্টারগুলো ডিলিট করতে। আপনি যদি স্কুইজ ছাড়া এটি করতে চান, তবে কেবল একটি সেট স্পেসিফাই করুন।
নিচের কমান্ড l, I, and z ক্যারেক্টারগুলো রিমুভ করবে:
echo 'Linuxize' | tr -d 'liz'