Sed (Stream Editor) এবং Shell Scripting (শেল স্ক্রিপ্টিং) একত্রে ব্যবহৃত হলে টেক্সট ফাইল প্রক্রিয়াকরণ এবং অটোমেশন কাজগুলি সহজ এবং শক্তিশালী হয়ে ওঠে। Shell Scripting হচ্ছে একটি প্রোগ্রামিং ভাষা যা শেল কমান্ড এবং অন্যান্য টুল ব্যবহার করে সিস্টেমের কাজগুলি অটোমেট করার জন্য ব্যবহৃত হয়। Sed এক ধরনের টুল যা Shell Scripts এ টেক্সট ম্যানিপুলেশন বা পরিবর্তন করতে সাহায্য করে।
Sed এবং Shell Scripting এর মাধ্যমে আপনি কীভাবে টেক্সট ফাইল প্রক্রিয়াকরণ করতে পারেন, চলুন তা দেখি।
1. Sed-এর সাথে Shell Scripting ব্যবহার
Sed হল একটি কমান্ড-লাইন টুল যা টেক্সট ফাইলের মধ্যে প্রক্রিয়া, পরিবর্তন, এবং ম্যানিপুলেশন করতে ব্যবহৃত হয়। Shell Scripts এ Sed ব্যবহার করা হলে, আপনি সহজেই স্ক্রিপ্টের মধ্যে টেক্সট ম্যানিপুলেশন কার্য সম্পাদন করতে পারবেন, যেমন টেক্সট ফাইলের বিভিন্ন অংশ পরিবর্তন করা, লাইন মুছে ফেলা, নতুন লাইন যোগ করা ইত্যাদি।
Shell Scripting এ Sed ব্যবহার করার সিনট্যাক্স:
#!/bin/bash
sed 'command' file.txtএখানে:
- command: Sed এর কমান্ড যা টেক্সট ফাইলের উপর প্রয়োগ হবে।
- file.txt: যে ফাইলটি Sed এর মাধ্যমে প্রক্রিয়া করা হবে।
Sed in Shell Script Example:
ফাইলের মধ্যে "cat" শব্দকে "dog"-এ পরিবর্তন করা:
#!/bin/bash
# sed script to replace "cat" with "dog" in file.txt
sed 's/cat/dog/g' file.txtব্যাখ্যা: এটি file.txt ফাইলে সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে।
2. Sed এর সাথে Conditional Execution (শর্তাধীন কার্যক্রম)
Shell Scripts এ Sed ব্যবহার করে আপনি শর্ত অনুসারে কিছু কার্যক্রম চালাতে পারেন। উদাহরণস্বরূপ, আপনি যদি কোনো নির্দিষ্ট প্যাটার্ন পেয়ে থাকেন, তাহলে তা দিয়ে কিছু পরিবর্তন করতে পারেন।
Example: Checking for a pattern and then applying a substitution:
#!/bin/bash
# Check if the word "cat" exists in the file and replace it
if grep -q "cat" file.txt; then
sed -i 's/cat/dog/g' file.txt
echo "Replaced 'cat' with 'dog'"
else
echo "'cat' not found in the file"
fiব্যাখ্যা:
grep -q "cat" file.txt: এই কমান্ডটি চেক করবে যদিfile.txtফাইলে "cat" শব্দটি থাকে।- Sed substitution: যদি "cat" পাওয়া যায়, তবে Sed দিয়ে এটি "dog"-এ প্রতিস্থাপন করা হবে।
-iঅপশন: এটি ইন-প্লেস ফাইল পরিবর্তন করবে, অর্থাৎ পরিবর্তন সরাসরিfile.txtফাইলে সেভ হবে।
3. Looping in Shell Scripts with Sed (Shell Script এ লুপিং)
Shell Script এ Sed এর মাধ্যমে আপনি টেক্সট ফাইলের মধ্যে লুপিংও করতে পারেন। যেমন, আপনি একটি ফাইলের প্রতিটি লাইনে কিছু পরিবর্তন করতে চান অথবা প্যাটার্নের উপর ভিত্তি করে কিছু করতে পারেন।
Example: Using Sed inside a Loop:
#!/bin/bash
# Loop through each line in a file and use sed
while IFS= read -r line
do
echo "$line" | sed 's/cat/dog/g'
done < file.txtব্যাখ্যা:
while IFS= read -r line: এটিfile.txtফাইলের প্রতিটি লাইনে লুপ করবে।sed 's/cat/dog/g': এটি প্রতিটি লাইনে "cat" শব্দটি "dog"-এ পরিবর্তন করবে।
4. Multiple Sed Commands in Shell Script (Shell Script এ একাধিক Sed কমান্ড)
Sed এর একাধিক কমান্ড একটি স্ক্রিপ্টের মধ্যে ব্যবহার করতে পারবেন। আপনি একটি স্ক্রিপ্টে একাধিক Sed কমান্ড ব্যবহার করে ফাইলের মধ্যে একাধিক পরিবর্তন করতে পারেন।
Example: Multiple Sed Commands:
#!/bin/bash
# Apply multiple sed commands to a file
sed -e 's/cat/dog/g' -e 's/bird/fish/g' file.txtব্যাখ্যা: এটি file.txt ফাইলের মধ্যে "cat" শব্দগুলোকে "dog"-এ এবং "bird" শব্দগুলোকে "fish"-এ পরিবর্তন করবে।
5. Redirecting Output to a File (আউটপুট ফাইলের মধ্যে রিডাইরেকশন)
Shell Scripts এ Sed এর মাধ্যমে আউটপুট ফাইলের মধ্যে রিডাইরেকশন করা যায়, অর্থাৎ আপনার Sed কমান্ডের ফলাফল সরাসরি একটি ফাইলে সংরক্ষণ করা যায়।
Example: Output Redirection in Sed:
#!/bin/bash
# Replace "cat" with "dog" and save the result to a new file
sed 's/cat/dog/g' file.txt > newfile.txtব্যাখ্যা: এটি file.txt ফাইলের সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং আউটপুট newfile.txt ফাইলে সংরক্ষণ করবে।
6. In-Place Editing with Shell Script (Shell Script এ ইন-প্লেস এডিটিং)
Shell Script এ Sed এর in-place editing ব্যবহার করে আপনি ফাইলের মধ্যে সরাসরি পরিবর্তন করতে পারেন। এতে ফাইলটি নতুন করে তৈরি না হয়ে সরাসরি পরিবর্তন হয়।
Example: In-Place Editing in Shell Script:
#!/bin/bash
# Replace "cat" with "dog" directly in the file
sed -i 's/cat/dog/g' file.txtব্যাখ্যা: এটি file.txt ফাইলের সমস্ত "cat" শব্দগুলোকে "dog"-এ সরাসরি পরিবর্তন করবে এবং ফাইলে সেই পরিবর্তন সেভ করবে।
7. Combining Sed with Other Commands in Shell Script
Shell Scripting এর শক্তি আসে বিভিন্ন কমান্ডের সংমিশ্রণে। Sed কে আপনি অন্যান্য কমান্ডের সাথে সংযুক্ত করে ব্যবহার করতে পারেন। যেমন awk, grep, cut, find ইত্যাদি কমান্ড।
Example: Sed with grep and awk:
#!/bin/bash
# Find lines containing 'cat', replace 'cat' with 'dog', and then extract columns using awk
grep 'cat' file.txt | sed 's/cat/dog/g' | awk '{print $1, $2}'ব্যাখ্যা:
grep 'cat' file.txt: ফাইলের মধ্যে "cat" শব্দটি পাওয়া লাইনের জন্যgrepব্যবহার করা হয়েছে।sed 's/cat/dog/g': "cat" শব্দগুলোকে "dog"-এ পরিবর্তন করা হয়েছে।awk '{print $1, $2}': এখানেawkদিয়ে প্রথম দুটি কলাম প্রদর্শন করা হচ্ছে।
সারাংশ
Sed এবং Shell Scripting একত্রে ব্যবহার করলে আপনি শক্তিশালী এবং অটোমেটেড টেক্সট ম্যানিপুলেশন করতে পারবেন। Sed কমান্ডের মাধ্যমে ফাইলের মধ্যে পরিবর্তন, প্রতিস্থাপন, লাইন মুছে ফেলা এবং আরও অনেক কিছু করতে পারেন। Shell Scripts এ Sed ব্যবহার করে আপনি এই কাজগুলো স্বয়ংক্রিয়ভাবে করতে পারেন, লুপ, শর্ত, আউটপুট রিডাইরেকশন, এবং অন্যান্য ফাইল অপারেশন একত্রে ব্যবহার করে জটিল টাস্ক সহজে এবং দ্রুত সম্পাদন করতে পারবেন।
Shell Scripts এর মধ্যে Sed ব্যবহার করা একটি শক্তিশালী পদ্ধতি, যা আপনাকে ফাইলের মধ্যে টেক্সট প্রক্রিয়া করতে, পরিবর্তন করতে এবং ফিল্টার করতে সাহায্য করে। Sed কমান্ডের মাধ্যমে আপনি একাধিক টেক্সট ম্যানিপুলেশন কাজ যেমন, search and replace, delete lines, insert lines, এবং pattern matching করতে পারেন।
Shell Scripts এ Sed ব্যবহার করার উদ্দেশ্য
Shell Scripts এ Sed ব্যবহার করার কিছু মূল উদ্দেশ্য হলো:
- ফাইলের মধ্যে একাধিক পরিবর্তন একসাথে করতে।
- নির্দিষ্ট প্যাটার্ন বা শব্দের সাথে মেলানো লাইনগুলোর উপর অপারেশন প্রয়োগ করতে।
- ফাইলের মধ্যে ডেটা বা লাইন মুছে ফেলা বা প্রতিস্থাপন করতে।
- বিভিন্ন টেক্সট ফরম্যাটিং এবং বিশ্লেষণ করতে।
Shell Script এর মধ্যে Sed ব্যবহার করার জন্য সাধারণ সিনট্যাক্স
#!/bin/bash
sed 'command' file.txtএখানে:
#!/bin/bash: এটি শেল স্ক্রিপ্টের প্রথম লাইন, যা স্ক্রিপ্টের শেল পরিবেশ (Bash) নির্দেশ করে।command: এটি Sed কমান্ড যা আপনি ফাইল বা স্ট্রিমে চালাতে চান।file.txt: ইনপুট ফাইল যেখানে Sed কমান্ড প্রয়োগ করা হবে।
Shell Script এ Sed কমান্ড ব্যবহার করার কিছু উদাহরণ
1. একটি নির্দিষ্ট শব্দ প্রতিস্থাপন (Search and Replace)
Shell Script ব্যবহার করে আপনি Sed এর মাধ্যমে একটি নির্দিষ্ট শব্দ বা প্যাটার্ন খুঁজে সেটিকে প্রতিস্থাপন করতে পারেন।
#!/bin/bash
# "apple" শব্দকে "orange" দিয়ে প্রতিস্থাপন করা
sed -i 's/apple/orange/g' file.txtএটি file.txt ফাইলে সমস্ত "apple" শব্দকে "orange"-এ প্রতিস্থাপন করবে এবং পরিবর্তনগুলি সরাসরি ফাইলে সেভ হবে।
2. নির্দিষ্ট লাইন মুছে ফেলা
আপনি যদি কোনো নির্দিষ্ট লাইন মুছে ফেলতে চান, তাহলে d (delete) কমান্ড ব্যবহার করতে পারেন।
#!/bin/bash
# দ্বিতীয় লাইন মুছে ফেলা
sed -i '2d' file.txtএটি file.txt ফাইলের দ্বিতীয় লাইনটি মুছে ফেলবে।
3. প্যাটার্ন অনুসারে লাইন মুছে ফেলা
Sed ব্যবহার করে আপনি নির্দিষ্ট প্যাটার্নের সাথে মিলানো লাইনগুলো মুছে ফেলতে পারেন।
#!/bin/bash
# "cat" শব্দযুক্ত লাইনগুলো মুছে ফেলা
sed -i '/cat/d' file.txtএটি file.txt ফাইল থেকে "cat" শব্দযুক্ত সমস্ত লাইন মুছে ফেলবে।
4. নতুন লাইন যোগ করা
Sed এর মাধ্যমে আপনি নির্দিষ্ট স্থানে নতুন লাইন যোগ করতে পারেন।
#!/bin/bash
# দ্বিতীয় লাইনের পরে নতুন লাইন যোগ করা
sed -i '2a This is a new line' file.txtএটি file.txt ফাইলের দ্বিতীয় লাইনের পরে "This is a new line" যোগ করবে।
5. একাধিক Sed কমান্ড একসাথে চালানো
আপনি -e অপশন ব্যবহার করে একাধিক Sed কমান্ড একসাথে চালাতে পারেন। যেমন, প্রথমে একটি শব্দ প্রতিস্থাপন এবং তারপর একটি লাইন মুছে ফেলা।
#!/bin/bash
# প্রথমে "apple" কে "orange" দিয়ে প্রতিস্থাপন এবং তারপর দ্বিতীয় লাইনটি মুছে ফেলা
sed -i -e 's/apple/orange/g' -e '2d' file.txtএটি:
- "apple" শব্দকে "orange"-এ প্রতিস্থাপন করবে।
- দ্বিতীয় লাইনটি মুছে ফেলবে।
6. ফাইলের মধ্যে নির্দিষ্ট শব্দ বা প্যাটার্ন খুঁজে আউটপুট দেখানো
আপনি Sed ব্যবহার করে একটি নির্দিষ্ট প্যাটার্ন খুঁজে সেই প্যাটার্ন মেলানো লাইনগুলো দেখতে পারেন।
#!/bin/bash
# "cat" শব্দের সাথে মেলা সব লাইন দেখানো
sed -n '/cat/p' file.txtএটি file.txt ফাইল থেকে "cat" শব্দের সাথে মেলা সমস্ত লাইন আউটপুটে প্রদর্শন করবে।
7. Multiple Files এর উপর Sed প্রয়োগ
একাধিক ফাইলের উপর Sed কমান্ড প্রয়োগ করতে, আপনি একাধিক ফাইলকে ইনপুট হিসেবে দিতে পারেন।
#!/bin/bash
# "apple" শব্দটিকে "orange" দিয়ে প্রতিস্থাপন করে একাধিক ফাইলে
sed -i 's/apple/orange/g' file1.txt file2.txt file3.txtএটি file1.txt, file2.txt, এবং file3.txt ফাইলে "apple" শব্দটিকে "orange"-এ প্রতিস্থাপন করবে।
Shell Script এ Sed কমান্ডের মাধ্যমে কিছু উন্নত কার্যকারিতা
8. Text Substitution with Variables
Sed স্ক্রিপ্টে শেল ভেরিয়েবল ব্যবহার করা যেতে পারে, যা স্ক্রিপ্টে ডাইনামিকভাবে মান পরিবর্তন করতে সাহায্য করে।
#!/bin/bash
# একটি ভেরিয়েবল ব্যবহার করে "apple" শব্দকে প্রতিস্থাপন করা
word="apple"
sed -i "s/$word/orange/g" file.txtএটি file.txt ফাইলে $word ভেরিয়েবল (যার মান "apple") দিয়ে প্রতিস্থাপন করবে।
9. Looping with Sed in Shell Script
Shell স্ক্রিপ্টে Sed ব্যবহার করে লুপ তৈরি করা সম্ভব। এটি অনেক বড় ফাইলের জন্য কার্যকরী হতে পারে।
#!/bin/bash
# প্রতিটি ফাইলের উপর Sed কমান্ড প্রয়োগ করা
for file in *.txt
do
sed -i 's/apple/orange/g' "$file"
doneএটি বর্তমান ডিরেক্টরিতে থাকা সমস্ত .txt ফাইলে "apple" শব্দকে "orange"-এ প্রতিস্থাপন করবে।
Conclusion
Shell Scripts এ Sed ব্যবহার করলে আপনি ফাইল ম্যানিপুলেশন কাজগুলো দ্রুত এবং কার্যকরভাবে সম্পন্ন করতে পারেন। এর মাধ্যমে:
- আপনি বিভিন্ন ফাইলে একযোগে পরিবর্তন করতে পারেন।
- ফাইলের মধ্যে সরাসরি পরিবর্তন করতে পারেন।
- একাধিক Sed কমান্ড দিয়ে complex editing করতে পারেন।
- শেল ভেরিয়েবল এবং লুপিং ব্যবহার করে ডাইনামিকভাবে কাজ করতে পারেন।
Sed Shell Scripts এর মধ্যে খুবই শক্তিশালী একটি টুল, যা টেক্সট প্রক্রিয়া ও ফিল্টারিংয়ের কাজে অত্যন্ত সহায়ক।
Sed (Stream Editor) একটি শক্তিশালী টুল যা Automated Text Processing (স্বয়ংক্রিয় টেক্সট প্রক্রিয়াকরণ) এর জন্য ব্যবহৃত হয়। এটি কমান্ড লাইন থেকে টেক্সট ফাইল বা স্ট্রিমের মধ্যে বিভিন্ন ধরনের পরিবর্তন, ম্যানিপুলেশন, বা ফরম্যাটিং করতে সাহায্য করে। Sed এর মাধ্যমে আপনি search and replace, line deletion, text insertion, substitution, এবং অন্যান্য অনেক ধরনের টেক্সট প্রক্রিয়াকরণ করতে পারেন।
এখানে Sed ব্যবহার করে Automated Text Processing করার বিভিন্ন উপায় এবং প্রক্রিয়া সম্পর্কে বিস্তারিত আলোচনা করা হলো।
1. Search and Replace (প্যাটার্ন খুঁজে প্রতিস্থাপন)
Sed এর সবচেয়ে সাধারণ এবং প্রাথমিক ব্যবহার হল search and replace। আপনি একটি নির্দিষ্ট প্যাটার্ন খুঁজে সেটি অন্য কোনো প্যাটার্ন দিয়ে প্রতিস্থাপন করতে পারেন। এটি প্রায়শই স্ক্রিপ্টিং এবং অটোমেটেড কাজের জন্য ব্যবহৃত হয়।
উদাহরণ 1: প্যাটার্ন খুঁজে প্রতিস্থাপন
sed 's/cat/dog/g' file.txtএটি file.txt ফাইল থেকে "cat" শব্দকে "dog" দিয়ে প্রতিস্থাপন করবে এবং আউটপুটে দেখাবে। g ফ্ল্যাগ দ্বারা, global প্রতিস্থাপন নির্দেশিত হয়, অর্থাৎ সমস্ত occurrences পরিবর্তিত হবে।
উদাহরণ 2: নির্দিষ্ট প্যাটার্নের সাথে পরিবর্তন
sed 's/^Hello/Hi/' file.txtএটি শুধুমাত্র লাইন শুরুতে "Hello" শব্দটি খুঁজে সেটি "Hi" দিয়ে প্রতিস্থাপন করবে।
2. Line Deletion (লাইন মুছে ফেলা)
Sed এর মাধ্যমে আপনি একটি বা একাধিক লাইন মুছে ফেলতে পারেন। এটি d কমান্ড ব্যবহার করে করা হয়। এটি বিশেষভাবে উপকারী যখন আপনাকে নির্দিষ্ট শর্ত পূর্ণ হলে লাইন মুছে ফেলতে হয়।
উদাহরণ 3: নির্দিষ্ট প্যাটার্নের সাথে লাইন মুছে ফেলা
sed '/^#/d' file.txtএটি file.txt ফাইল থেকে সমস্ত কমেন্ট (যেগুলি "#" দিয়ে শুরু) লাইন মুছে ফেলবে।
উদাহরণ 4: নির্দিষ্ট লাইন মুছে ফেলা
sed '3d' file.txtএটি file.txt থেকে তৃতীয় লাইন মুছে ফেলবে।
উদাহরণ 5: খালি লাইন মুছে ফেলা
sed '/^$/d' file.txtএটি file.txt থেকে সমস্ত খালি লাইন মুছে ফেলবে।
3. Text Insertion (নতুন টেক্সট যোগ করা)
Sed দিয়ে আপনি কোনো লাইন বা প্যাটার্নের পরে বা আগে নতুন টেক্সট যোগ করতে পারেন। এটি a (append) এবং i (insert) কমান্ড ব্যবহার করে করা হয়।
উদাহরণ 6: নির্দিষ্ট লাইনের পরে নতুন লাইন যোগ করা
sed '2a This is a new line' file.txtএটি file.txt ফাইলে দ্বিতীয় লাইনের পরে "This is a new line" যোগ করবে।
উদাহরণ 7: নির্দিষ্ট লাইনের আগে নতুন লাইন যোগ করা
sed '3i This is an inserted line' file.txtএটি file.txt ফাইলে তৃতীয় লাইনের আগে "This is an inserted line" যোগ করবে।
4. Automated Substitution with Regular Expressions (রেগুলার এক্সপ্রেশন ব্যবহার করে স্বয়ংক্রিয় প্রতিস্থাপন)
Sed এবং Regular Expressions ব্যবহার করে আপনি আরও জটিল প্যাটার্ন খুঁজে এবং সেটি প্রতিস্থাপন করতে পারেন। এটি স্বয়ংক্রিয়ভাবে টেক্সট ফাইল বা স্ট্রিমের মধ্যে পরিবর্তন আনার জন্য উপকারী।
উদাহরণ 8: ক্যাপিটালাইজেশন (Uppercase) পরিবর্তন করা
ধরা যাক, আপনি file.txt ফাইলের সব ছোট হাতের অক্ষরকে বড় হাতের অক্ষরে পরিবর্তন করতে চান:
sed 's/[a-z]/\U&/g' file.txtএটি file.txt ফাইলে সব ছোট হাতের অক্ষরকে বড় হাতের অক্ষরে পরিবর্তন করবে।
উদাহরণ 9: নির্দিষ্ট শব্দের মধ্যে স্থান পরিবর্তন করা
sed 's/\bcat\b/dog/g' file.txtএটি cat শব্দটি যেখানে আলাদা শব্দ হিসেবে ব্যবহৃত হয়েছে, সেখানে dog দিয়ে প্রতিস্থাপন করবে।
5. Complex Text Processing with Conditional Execution (শর্তাধীন কার্য সম্পাদন)
Sed এ Conditional Execution (শর্তাধীন কার্য সম্পাদন) করতে হলে সাধারণত t (test) এবং b (branch) কমান্ড ব্যবহার করা হয়। আপনি নির্দিষ্ট শর্ত পূর্ণ হলে বিভিন্ন পরিবর্তন করতে পারেন।
উদাহরণ 10: প্যাটার্ন পাওয়া গেলে একটি পরিবর্তন করা
sed '/cat/ t; s/fish/seafood/' file.txtএটি:
- যদি "cat" প্যাটার্ন মেলে, তাহলে পরবর্তী কমান্ডটি (যেমন "fish" প্রতিস্থাপন) চালাবে।
- যদি "cat" না পাওয়া যায়, তবে "fish" শব্দটি "seafood"-এ পরিবর্তন করবে।
6. File Manipulation with Multiple Files (একাধিক ফাইলের মধ্যে টেক্সট পরিবর্তন)
Sed ব্যবহার করে আপনি একাধিক ফাইলে একই সময় একই পরিবর্তন করতে পারেন।
উদাহরণ 11: একাধিক ফাইলে একই পরিবর্তন প্রয়োগ করা
sed -i 's/cat/dog/g' file1.txt file2.txt file3.txtএটি file1.txt, file2.txt এবং file3.txt ফাইলে সমস্ত "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে এবং তা সরাসরি সেভ করবে।
7. Using Sed with Pipes for Automated Text Processing
Sed এর মাধ্যমে pipes ব্যবহার করে আপনি একাধিক কমান্ড একত্রে চালাতে পারেন। এটি একটি টেক্সট স্ট্রিমের মধ্যে পরিবর্তন করতে এবং ফলস্বরূপ অন্য কমান্ডের আউটপুট দিতে সাহায্য করে।
উদাহরণ 12: Pipe এর মাধ্যমে টেক্সট প্রক্রিয়া করা
cat file.txt | sed 's/cat/dog/g' | sed 's/fish/seafood/g'এটি:
file.txtফাইলের "cat" শব্দকে "dog"-এ প্রতিস্থাপন করবে,- তারপর "fish" শব্দটিকে "seafood"-এ প্রতিস্থাপন করবে।
Conclusion
- Automated Text Processing করার জন্য Sed একটি শক্তিশালী টুল। আপনি search and replace, line deletion, text insertion, substitution, এবং complex pattern matching করতে পারেন।
- Sed এর মাধ্যমে আপনি in-place editing, multiple file manipulation, এবং pipe ব্যবহার করে স্বয়ংক্রিয়ভাবে টেক্সট প্রক্রিয়া করতে পারেন।
- এটি স্ক্রিপ্টিং এবং টেক্সট ম্যানিপুলেশনের জন্য অত্যন্ত কার্যকর, যা দৈনিক টাস্ক বা লগ ফাইল বিশ্লেষণে খুবই উপকারী হতে পারে।
Sed, awk, এবং grep তিনটি অত্যন্ত শক্তিশালী টেক্সট প্রক্রিয়াকরণ টুল, যা Unix/Linux সিস্টেমে ব্যবহার করা হয়। এই টুলগুলোর একে অপরের সাথে integration বা সমন্বয় করে আরও জটিল এবং শক্তিশালী টেক্সট ম্যানিপুলেশন সম্ভব। এখানে আলোচনা করা হবে কিভাবে Sed, awk, এবং grep এর সাথে একত্রে কাজ করা যায় এবং তাদের মাধ্যমে আরও শক্তিশালী text processing প্রক্রিয়া করা যায়।
1. Sed এবং Awk এর Integration
Awk হল একটি শক্তিশালী টুল যা টেবিলের মতো ডেটা বা ফাইলের কলাম ভিত্তিক প্রক্রিয়া করার জন্য ব্যবহৃত হয়, এবং Sed হলো একটি লাইনের মধ্যে টেক্সট পরিবর্তন বা ম্যানিপুলেট করার জন্য ব্যবহৃত টুল। এই দুটি টুল একত্রে ব্যবহার করে আপনি column-based text manipulation করতে পারেন এবং সেই সাথে pattern-based modifications করতে পারেন।
উদাহরণ 1: Awk এবং Sed একত্রে ব্যবহার করা
ধরা যাক, আপনি একটি ফাইলে প্রথম কলামে "cat" শব্দটিকে "dog" দিয়ে পরিবর্তন করতে চান, এবং তারপর এই ফাইলের কলামগুলোর মধ্যে কিছু যোগ করতে চান:
awk '{print $1, $2}' file.txt | sed 's/cat/dog/g'এটি:
awk '{print $1, $2}': প্রথম দুটি কলামকে বের করবে।sed 's/cat/dog/g': "cat" শব্দটিকে "dog"-এ প্রতিস্থাপন করবে।
উদাহরণ 2: Awk-এর মাধ্যমে কলাম বাছাই করে, Sed দিয়ে পরিবর্তন করা
আপনি যদি কোনো কলামে "apple" শব্দটি খুঁজে বের করতে চান এবং তারপর সেটা পরিবর্তন করতে চান, তাহলে:
awk '$1 == "apple" {print $1, $2}' file.txt | sed 's/apple/orange/g'এটি:
awk '$1 == "apple" {print $1, $2}': শুধুমাত্র যেসব লাইন প্রথম কলামে "apple" আছে, সেগুলো প্রিন্ট করবে।sed 's/apple/orange/g': "apple" শব্দটিকে "orange"-এ পরিবর্তন করবে।
2. Sed এবং Grep এর Integration
Grep হলো একটি শক্তিশালী টুল যা টেক্সট ফাইলে নির্দিষ্ট প্যাটার্ন খুঁজে বের করার জন্য ব্যবহৃত হয়। Sed এবং Grep একত্রে ব্যবহার করে আপনি টেক্সট ফাইলে নির্দিষ্ট প্যাটার্ন খুঁজে সেই প্যাটার্নের উপর কাজ করতে পারেন, যেমন টেক্সট পরিবর্তন বা সংশোধন করা।
উদাহরণ 1: Grep এবং Sed একত্রে ব্যবহার করা
আপনি যদি শুধুমাত্র এমন লাইনগুলোর সাথে কাজ করতে চান যেগুলোর মধ্যে "apple" শব্দটি রয়েছে, তাহলে প্রথমে grep ব্যবহার করে সেই লাইনগুলো বের করতে পারেন, তারপর sed দিয়ে সংশোধন করতে পারেন:
grep "apple" file.txt | sed 's/apple/orange/g'এটি:
grep "apple":file.txtফাইল থেকে শুধুমাত্র সেই লাইনগুলো খুঁজে বের করবে যেখানে "apple" শব্দটি রয়েছে।sed 's/apple/orange/g': "apple" শব্দটিকে "orange"-এ পরিবর্তন করবে।
উদাহরণ 2: Sed এবং Grep ব্যবহার করে নির্দিষ্ট লাইন মুছে ফেলা
আপনি যদি ফাইলের এমন লাইনগুলো মুছে ফেলতে চান যেগুলোর মধ্যে "error" শব্দটি রয়েছে, তাহলে:
grep -v "error" file.txt | sed 's/old_text/new_text/g'এটি:
grep -v "error": "error" শব্দযুক্ত লাইনগুলো বাদ দিয়ে বাকি লাইনগুলো আউটপুট করবে।sed 's/old_text/new_text/g': বাকি লাইনগুলোর মধ্যেold_textকেnew_textদিয়ে প্রতিস্থাপন করবে।
3. Sed, Awk, এবং Grep একত্রে ব্যবহার করা
এই তিনটি টুল একত্রে ব্যবহার করে আপনি আরো জটিল টেক্সট প্রক্রিয়াকরণ করতে পারেন। ধরুন, আপনি একটি ফাইলে প্রথম কলামে "apple" শব্দটি খুঁজে বের করতে চান, তারপর সেই লাইনটি সম্পূর্ণভাবে পরিবর্তন করতে চান এবং তারপর শুধু সেই লাইনগুলো দেখতে চান যেগুলোর মধ্যে "fruit" শব্দটি রয়েছে।
awk '$1 == "apple" {print $0}' file.txt | sed 's/apple/orange/g' | grep "fruit"এটি:
awk '$1 == "apple" {print $0}': প্রথম কলামে "apple" থাকলে সেই লাইনগুলো আউটপুট করবে।sed 's/apple/orange/g': "apple" শব্দটিকে "orange"-এ পরিবর্তন করবে।grep "fruit": "fruit" শব্দটি যেসব লাইনে রয়েছে, সেগুলো আউটপুট করবে।
4. Sed এবং Awk এর মাধ্যমে Complex Data Processing
Awk এবং Sed এর মাধ্যমে আপনি আরও জটিল ডেটা প্রসেসিং করতে পারেন, যেমন নির্দিষ্ট ফিল্টারিং এবং টেক্সট পরিবর্তন, কলামের মধ্যে কাজ করা এবং পরবর্তীতে সেগুলোকে পরিবর্তন করা।
উদাহরণ: Awk দিয়ে কলাম বাছাই এবং Sed দিয়ে টেক্সট পরিবর্তন
awk '{print $1, $3}' file.txt | sed 's/apple/orange/g'এটি:
awk '{print $1, $3}': প্রথম এবং তৃতীয় কলাম প্রিন্ট করবে।sed 's/apple/orange/g': প্রথম এবং তৃতীয় কলামে "apple" শব্দটি "orange"-এ পরিবর্তন করবে।
5. Regular Expressions ব্যবহার করে সিস্টেমের মধ্যে Filtering এবং Processing
Grep এবং Sed এর সাথে regular expressions ব্যবহার করে জটিল প্যাটার্ন matching এবং filtering করা যায়।
উদাহরণ: Regular Expressions ব্যবহার করে Filtering
grep -E '^a.*e$' file.txt | sed 's/apple/orange/g'এটি:
grep -E '^a.*e$': এমন লাইনের মধ্যে "a" দিয়ে শুরু এবং "e" দিয়ে শেষ হওয়ার প্যাটার্ন খুঁজে বের করবে।sed 's/apple/orange/g': "apple" শব্দটিকে "orange"-এ পরিবর্তন করবে।
Conclusion
Sed, awk, এবং grep এর মতো powerful টুলগুলো একত্রে ব্যবহার করে আপনি complex text processing এবং data manipulation করতে পারেন। এগুলোর মধ্যে:
- Sed ব্যবহার করে টেক্সট পরিবর্তন এবং ফাইল ম্যানিপুলেশন করা হয়।
- Awk ব্যবহার করে কলাম বা ফিল্ড ভিত্তিক প্রসেসিং করা হয়।
- Grep ব্যবহার করে প্যাটার্ন ভিত্তিক লাইন ফিল্টারিং করা হয়।
এই টুলগুলোর একত্রিত ব্যবহার করে আপনি টেক্সট ফাইল বা ডেটাবেসে জটিল প্রক্রিয়া এবং বিশ্লেষণ করতে পারেন।
Shell scripting হল একটি শক্তিশালী এবং কার্যকরী উপায়, যার মাধ্যমে আপনি complex automation tasks (জটিল অটোমেশন কাজ) সম্পন্ন করতে পারেন। এটি সিস্টেম অ্যাডমিনিস্ট্রেশন, ডেটা প্রসেসিং, ব্যাকআপ ব্যবস্থাপনা, টাস্ক স্কেডিউলিং এবং আরও অনেক ক্ষেত্রে ব্যবহৃত হয়। Shell scripts বিশেষভাবে bash scripting ব্যবহৃত হয়ে থাকে, কারণ bash (Bourne Again Shell) অধিকাংশ Unix এবং Linux সিস্টেমে প্রিফারড শেল।
নিচে Shell scripting এর মাধ্যমে complex automation tasks করার কিছু উদাহরণ দেওয়া হলো।
1. Automated Backup Creation
Use-case: সিস্টেম বা ডেটাবেসের অটোমেটিক ব্যাকআপ তৈরি করা এবং সংরক্ষণ।
Shell Script: একটি স্ক্রিপ্ট তৈরি করে ডিরেক্টরি বা ডেটাবেসের ব্যাকআপ তৈরি করতে পারেন।
#!/bin/bash
# Define the backup source and destination directories
SOURCE_DIR="/home/user/data"
BACKUP_DIR="/home/user/backups"
# Create a timestamp for backup naming
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
# Create the backup
tar -czf $BACKUP_DIR/backup_$TIMESTAMP.tar.gz $SOURCE_DIR
# Check if the backup was successful
if [ $? -eq 0 ]; then
echo "Backup created successfully: backup_$TIMESTAMP.tar.gz"
else
echo "Backup failed!"
fiExplained:
tarকমান্ডটি ব্যবহার করে আপনি একটি টারগেট ডিরেক্টরি (যেমন /home/user/data) থেকে compressed archive (tar.gz ফাইল) তৈরি করবেন।dateকমান্ড ব্যবহার করে একটি timestamp তৈরি করা হবে, যা ব্যাকআপ ফাইলের নামের সাথে যুক্ত হবে।
Usage:
- এটি ক্রনজব (cron job) হিসেবে রেকারিং ব্যাকআপ এর জন্য চালানো যেতে পারে।
2. System Resource Monitoring and Alerting
Use-case: সিস্টেমের রিসোর্স (CPU, Memory, Disk) ব্যবহারের মনিটরিং এবং threshold অতিক্রম করলে এলার্ট পাঠানো।
Shell Script: সিস্টেমের CPU এবং RAM ব্যবহার মনিটর করা এবং threshold অতিক্রম করলে এলার্ট পাঠানো।
#!/bin/bash
# Set thresholds for CPU and memory usage
CPU_THRESHOLD=80
MEMORY_THRESHOLD=80
# Get current CPU and memory usage percentages
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
# Check if CPU usage exceeds the threshold
if [ $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc) -eq 1 ]; then
echo "Warning: CPU usage is at $CPU_USAGE%" | mail -s "CPU Usage Alert" user@example.com
fi
# Check if memory usage exceeds the threshold
if [ $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc) -eq 1 ]; then
echo "Warning: Memory usage is at $MEMORY_USAGE%" | mail -s "Memory Usage Alert" user@example.com
fiExplained:
topকমান্ডের মাধ্যমে CPU ব্যবহারের শতাংশ পাওয়া হয়েছে।freeকমান্ডের মাধ্যমে মেমরি ব্যবহারের শতাংশ হিসাব করা হয়েছে।bcব্যবহার করে শর্ত যাচাই করা হয়েছে (যেমন, 80% CPU ব্যবহার হলে এলার্ট পাঠানো হবে)।- এলার্ট হিসেবে একটি email পাঠানো হচ্ছে।
Usage:
- স্ক্রিপ্টটি ক্রনজব (cron job) হিসেবে নির্দিষ্ট সময় পর পর চালানো যেতে পারে।
3. File Processing and Reporting
Use-case: একাধিক ফাইল থেকে ডেটা প্রসেস করা এবং রিপোর্ট তৈরি করা।
Shell Script: সমস্ত text files থেকে নির্দিষ্ট প্যাটার্ন খুঁজে, তাদের সংখ্যা এবং স্থান রেকর্ড করা এবং একটি রিপোর্ট তৈরি করা।
#!/bin/bash
# Define the directory containing files
DIRECTORY="/home/user/documents"
# Initialize a report file
REPORT="/home/user/report.txt"
echo "Pattern Search Report - $(date)" > $REPORT
# Loop through all text files in the directory
for FILE in $DIRECTORY/*.txt; do
# Search for the pattern and count occurrences
PATTERN_COUNT=$(grep -o "ERROR" "$FILE" | wc -l)
# If the pattern exists, write it to the report
if [ $PATTERN_COUNT -gt 0 ]; then
echo "File: $FILE - ERROR occurrences: $PATTERN_COUNT" >> $REPORT
fi
done
# Output final report path
echo "Report generated at: $REPORT"Explained:
grepকমান্ড ব্যবহার করে "ERROR" প্যাটার্নের occurrences গননা করা হয়েছে।- প্রতিটি .txt ফাইল থেকে তথ্য সংগ্রহ করে একটি রিপোর্টে যোগ করা হয়েছে।
wc -lদিয়ে প্রতিটি ফাইলে প্যাটার্নের সংখ্যা গননা করা হয়েছে।
Usage:
- এই স্ক্রিপ্টটি সিস্টেমের log files বা text data বিশ্লেষণ করতে ব্যবহৃত হতে পারে।
4. Automated Cleanup of Temporary Files
Use-case: পুরনো অস্থায়ী ফাইলগুলো সিস্টেম থেকে স্বয়ংক্রিয়ভাবে মুছে ফেলা।
Shell Script: 30 দিনের পুরনো অস্থায়ী ফাইল মুছে ফেলা।
#!/bin/bash
# Define the directory where temporary files are stored
TEMP_DIR="/tmp"
# Find and delete files older than 30 days
find $TEMP_DIR -type f -mtime +30 -exec rm -f {} \;
# Log the cleanup action
echo "Cleanup completed at $(date)" >> /var/log/cleanup.logExplained:
findকমান্ড দিয়ে/tmpডিরেক্টরি থেকে 30 দিনের পুরনো ফাইলগুলো খুঁজে মুছে ফেলা হয়েছে।-exec rm -f {}কমান্ডটি সেই ফাইলগুলো মুছে ফেলবে যা 30 দিন বা তার বেশি পুরনো।
Usage:
- এই স্ক্রিপ্টটি cron দিয়ে daily বা weekly রান করা যেতে পারে।
5. Batch Renaming Files
Use-case: একাধিক ফাইলের নাম পরিবর্তন করা (batch renaming), যেমন একাধিক ছবি বা ডকুমেন্টের নাম সঙ্গতিপূর্ণভাবে পরিবর্তন করা।
Shell Script: একাধিক ফাইলের নাম পরিবর্তন করা যাতে তাদের মধ্যে একটি কনভেনশন থাকে।
#!/bin/bash
# Define the directory with files
DIRECTORY="/home/user/images"
# Loop through all JPG files and rename them
for FILE in $DIRECTORY/*.jpg; do
NEW_NAME=$(echo $FILE | sed 's/old_pattern/new_pattern/')
mv "$FILE" "$NEW_NAME"
done
# Confirmation message
echo "Files renamed successfully."Explained:
sedব্যবহার করে পুরনো প্যাটার্নের সাথে মিল পাওয়া ফাইলগুলির নাম নতুন কনভেনশন অনুযায়ী পরিবর্তন করা হচ্ছে।mvকমান্ড দিয়ে ফাইলগুলোর নাম পরিবর্তন করা হচ্ছে।
Usage:
- ছবির বা ডকুমেন্টের নাম কনভেনশন ঠিক করতে বা batch renaming করতে ব্যবহৃত হবে।
6. Scheduling Tasks using Cron Jobs
Use-case: স্বয়ংক্রিয়ভাবে নির্দিষ্ট সময় পর পর স্ক্রিপ্ট চালানো (e.g., every day at midnight).
Shell Script: প্রতিদিন মধ্যরাতে ব্যাকআপ তৈরি করা।
#!/bin/bash
# Define the source and backup directories
SOURCE_DIR="/home/user/data"
BACKUP_DIR="/home/user/backups"
TIMESTAMP=$(date +%Y-%m-%d_%H-%M-%S)
# Create the backup
tar -czf $BACKUP_DIR/backup_$TIMESTAMP.tar.gz $SOURCE_DIR
echo "Backup completed: backup_$TIMESTAMP.tar.gz"Usage:
- এই স্ক্রিপ্টটি cron job হিসেবে প্রতিদিন মধ্যরাতে ব্যাকআপ নেওয়ার জন্য ব্যবহার করা যেতে পারে।
Conclusion
Shell scripting-এর মাধ্যমে আপনি complex automation tasks খুব সহজেই বাস্তবায়ন করতে পারেন। ব্যাচ ফাইল প্রসেসিং, সিস্টেম মনিটরিং, ডেটা সংগ্রহ এবং রিপোর্ট তৈরি, ব্যাকআপ তৈরি, ফাইল রিনেমিং, এবং আরও অনেক কাজ স্বয়ংক্রিয়ভাবে করার জন্য shell scripting অত্যন্ত কার্যকরী। Shell scripts দিয়ে আপনি দৈনন্দিন সিস্টেম ব্যবস্থাপনা, ফাইল পরিচালনা, এবং টাস্ক অটোমেশনকে দ্রুত এবং দক্ষভাবে সম্পাদন করতে পারেন।
Read more