এই নির্দেশিকা আপনাকে দেখায় কিভাবে লিনাক্সে awk কমান্ড ব্যবহার করতে হয়, প্রচুর দরকারী দৈনন্দিন উদাহরণ সহ।
AWK লিনাক্স অপারেটিং সিস্টেমের জন্য উপলব্ধ টেক্সট সার্চ এবং ম্যানিপুলেট করার জন্য একটি টুল এবং ভাষা।
The awk কমান্ড এবং একটি প্যাটার্ন দ্বারা সংজ্ঞায়িত পাঠ্যের জন্য সংশ্লিষ্ট স্ক্রিপ্টিং ভাষা অনুসন্ধান ফাইল এবং একটি নির্দিষ্ট ক্রিয়া সম্পাদন করুন প্যাটার্নের সাথে মেলে এমন টেক্সটে।
ওক বড় টেক্সট ফাইল বা প্রচুর সংখ্যক টেক্সট ফাইল থেকে ডেটা বের করা এবং রিপোর্ট তৈরি করার জন্য একটি দরকারী টুল - উদাহরণস্বরূপ লগ প্রক্রিয়াকরণ, বা তাপমাত্রা প্রোবের মতো ডেটা-রেকর্ডিং ডিভাইসগুলির আউটপুট, যা সময়ের সাথে সাথে প্রচুর ডেটা সংগ্রহ করেছে। . এটি ডাটাবেস কোয়েরি থেকে আউটপুটেও ব্যবহার করা যেতে পারে।
ইনস্টল করার প্রয়োজন নেই awk; এটি আপনার লিনাক্স সিস্টেমে আগে থেকেই পাওয়া উচিত।
awk সিনট্যাক্স
awk ব্যবহার করার জন্য সিনট্যাক্স টার্মিনালে কমান্ডটি নিম্নরূপ:
awk [PROGRAM] [INPUT FILES]
মনে রাখবেন:
- [প্রোগ্রাম] হল সার্চ প্যাটার্ন এবং ক্রিয়া করা - এটি সেই প্রোগ্রাম যা আপনি সরবরাহ করা ফাইলগুলিতে awk চালাতে চান
- এটি -f ব্যবহার করে ইনলাইনের পরিবর্তে একটি পাঠ্য ফাইল হিসাবেও সরবরাহ করা যেতে পারে বিকল্প
- [ইনপুট ফাইলগুলি] হল সেই ফাইলগুলি যেগুলিতে আপনি কাজ করতে চান – এটি একটি স্থান দ্বারা পৃথক করা বেশ কয়েকটি ফাইল, বা একটি ডিরেক্টরির পথ, অথবা ফাইলগুলির একটি প্যাটার্ন হতে পারে যা মিলবে
- কোন ইনপুট ফাইল নির্দিষ্ট না থাকলে, awk অন্য কমান্ড থেকে পাইপ করা আউটপুটে কাজ করবে
awk বিকল্প
নিম্নলিখিত বিকল্পগুলি awk কমান্ডে সরবরাহ করা যেতে পারে:
-f program-file | প্রোগ্রামের পাঠ্য কমান্ড লাইনের পরিবর্তে ফাইল থেকে পড়া হয়। একাধিক -f বিকল্প গ্রহণ করা হয়। |
-F মান | ক্ষেত্র বিভাজক, FS, মান নির্ধারণ করে। |
-v var=value | প্রোগ্রাম ভেরিয়েবল var-এ মান বরাদ্দ করে। |
আপনার awk সংস্করণের জন্য আরো বাস্তবায়ন-নির্দিষ্ট বিকল্পের জন্য, আপনি চালিয়ে ম্যানুয়ালটি পরীক্ষা করতে পারেন:
man awk
প্রোগ্রাম অ্যাকশন এবং ভেরিয়েবল
আপনি যে প্রোগ্রামটি awk এ সরবরাহ করেন আপনি এটিতে যে পাঠ্য ফাইলগুলি সরবরাহ করেন তাতে এটি কী করে তা নির্ধারণ করবে। একটি awk প্রোগ্রাম নিম্নলিখিত বিন্যাস নেয়:
CONDITION { ACTION } CONDITION { ACTION } ...
যেখানে CONDITION মেলানোর জন্য পাঠ্যের প্যাটার্ন এবং ACTION মিলিত টেক্সট নেভিগেশন গ্রহণ করা হয়. আপনি যত খুশি তত শর্ত এবং কর্ম রাখতে পারেন।
ক্রিয়া
সরবরাহকৃত ক্রিয়াগুলি হল কমান্ড যা গণনা, ভেরিয়েবল এবং কলিং ফাংশন অন্তর্ভুক্ত করতে পারে। কিছু অন্তর্নির্মিত ফাংশন বাস্তবায়ন-নির্দিষ্ট, তাই এগুলির জন্য আপনার ম্যানুয়াল পরীক্ষা করা ভাল।
রেকর্ড
ওক সাধারণত একটি পাঠ্য ফাইলের প্রতিটি নতুন লাইনকে একটি রেকর্ড হিসাবে বিবেচনা করে যদি না অন্যথায় বিকল্প এর মাধ্যমে নির্দিষ্ট করা হয় .
ক্ষেত্রগুলি
ওক ক্ষেত্রগুলি বোঝাতে হোয়াইটস্পেস (স্পেস, ট্যাব) ব্যবহার করবে রেকর্ডে যদি না অন্যথায় বিকল্প এর মাধ্যমে নির্দিষ্ট করা হয় .
ভেরিয়েবল
ওক অনেকগুলি অন্তর্নির্মিত ভেরিয়েবল রয়েছে যেগুলিকে আপনি নিজে সংজ্ঞায়িত না করে ব্যবহার করতে পারেন, যা কিছু সাধারণ পরিস্থিতি কভার করে:
ভেরিয়েবল | অর্থ |
---|---|
$0 | সম্পূর্ণ রেকর্ডের প্রতিনিধিত্ব করে |
$1, $2, $3 … | ক্ষেত্র ভেরিয়েবল - একটি রেকর্ডে পৃথক পাঠ্য ক্ষেত্রের জন্য পাঠ্য/মানগুলি ধরে রাখুন |
NR / N R এর সংখ্যা ecords | সব ফাইল থেকে এখন পর্যন্ত পড়া ইনপুট রেকর্ডের সংখ্যার বর্তমান গণনা |
FNR / F ile N R এর সংখ্যা ecords | বর্তমান ফাইলে এখন পর্যন্ত পঠিত ইনপুট রেকর্ডের সংখ্যার বর্তমান গণনা – প্রতিবার একটি নতুন ফাইল শুরু হলে স্বয়ংক্রিয়ভাবে শূন্যে রিসেট করুন |
NF / N F এর সংখ্যা ক্ষেত্র | বর্তমান ইনপুট রেকর্ডে ক্ষেত্রগুলির সংখ্যা - একটি রেকর্ডের শেষ ক্ষেত্রটি $NF ব্যবহার করে উল্লেখ করা যেতে পারে, $(NF-1) ব্যবহার করে 2য় থেকে শেষ ক্ষেত্রটি এবং আরও কিছু |
FILENAME | বর্তমান ইনপুট ফাইলের নাম |
FS / F ield S এপারেটর | একটি রেকর্ডে ক্ষেত্রগুলিকে আলাদা করতে ব্যবহৃত অক্ষর(গুলি)৷ ডিফল্টরূপে যেকোনো স্থান এবং ট্যাব অক্ষর | অন্তর্ভুক্ত করে
RS / R ecord S এপারেটর | একটি ফাইলে রেকর্ড আলাদা করতে ব্যবহৃত অক্ষর(গুলি)। ডিফল্টরূপে নতুন লাইন |
OFS / O utput F ield S এপারেটর | Awk আউটপুটে ক্ষেত্র আলাদা করতে ব্যবহৃত অক্ষর(গুলি)। ডিফল্ট হল একটি একক স্থান |
ORS / O utput R ecord S এপারেটর | Awk আউটপুটে ক্ষেত্র আলাদা করতে ব্যবহৃত অক্ষর(গুলি)। ডিফল্ট একটি নতুন লাইন |
OFMT / O utput F অথবাM aT | সংখ্যাসূচক আউটপুটের জন্য বিন্যাস – ডিফল্ট বিন্যাস হল “%.6g” |
awk ব্যবহারের উদাহরণ
এই উদাহরণগুলির জন্য, আমরা flowers.txt নামে একটি একক পাঠ্য ফাইলে কাজ করব , যার মধ্যে নিম্নলিখিত পাঠ্য রয়েছে:
red rose yellow daffodil pink flamingo white rose blue iris white lily red peony yellow orchid purple foxglove
ফাইল বিষয়বস্তু মুদ্রণ করুন
নিম্নলিখিত awk কমান্ডটি awk প্রিন্ট ব্যবহার করে একটি ফাইলের বিষয়বস্তু টার্মিনালে আউটপুট করবে ফাংশন:
awk '{print}' flowers.txt
ফাইলের মধ্যে রেকর্ডের সংখ্যা (লাইন) মুদ্রণ করুন
awk 'END { print NR }' sample.txt
এই উদাহরণটি ফাইলের লাইনের সংখ্যা আউটপুট করবে:
9
রেগুলার এক্সপ্রেশন ব্যবহার করে ফাইলে টেক্সট সার্চ করুন
নিম্নলিখিত কমান্ডটি শুধুমাত্র rose-এর প্রকার বর্ণনা করে একটি ফাইলে লাইনগুলি আউটপুট করবে :
awk '/rose/' flowers.txt
মনে রাখবেন REGEX (রেগুলার এক্সপ্রেশন) সিনট্যাক্স ব্যবহার করা হয় অনুসন্ধানের জন্য পাঠ্যকে সংজ্ঞায়িত করতে।
এই কমান্ডটি আউটপুট করবে:
red rose white rose
আরো রেজেক্স
awk '/^p/' flowers.txt
এই কমান্ডটি শুধুমাত্র p দিয়ে শুরু হওয়া রেকর্ড আউটপুট করবে :
pink flamingo purple foxglove
ফিল্ড ভেরিয়েবল ব্যবহার করা
ক্ষেত্র ভেরিয়েবল ব্যবহার করে , আপনি আউটপুট করতে পারেন শুধুমাত্র রেকর্ডের জন্য প্রথম ক্ষেত্র যা শুরু করে p :
awk '/^p/ {print $1;}' flowers.txt
যা আউটপুট করবে:
pink purple
অন্যান্য প্রোগ্রাম থেকে আউটপুট প্রক্রিয়াকরণ
আপনি পাইপ করতে পারেন অন্যান্য লিনাক্স শেল প্রোগ্রাম থেকে awk-এ আউটপুট প্রক্রিয়াকরণের জন্য. এই উদাহরণটি ls -l থেকে আউটপুট নেয় কমান্ড, যা বর্তমান ডিরেক্টরির বিষয়বস্তু তালিকাভুক্ত করে এবং 5ম-এর বিষয়বস্তু ফেরত দেয় ক্ষেত্র (ফাইলের আকার):
ls -l | awk '{print $5}'
যা এরকম কিছু আউটপুট করবে:
3104 3072 224 256
…(বর্তমান ডিরেক্টরিতে কতগুলি ফাইল রয়েছে এবং সেগুলি কত বড় তার উপর নির্ভর করে)।
বিল্ট-ইন ভেরিয়েবল ব্যবহার করা
awk '{print NR "-" $2 }' flowers.txt
এই কমান্ডটি বর্তমান রেকর্ড নম্বর (ফাইল লাইন নম্বর) মুদ্রণ করবে এবং তারপরে দ্বিতীয় ক্ষেত্র - ফুলের নাম:
1-red rose 2-yellow daffodil 3-pink flamingo 4-white rose 5-blue iris 6-white lily 7-red peony 8-yellow orchid 9-purple foxglove
কম্বিনিং অ্যাকশন
শর্তগুলি৷ এবং ক্রিয়া && ব্যবহার করে একত্রিত করা যেতে পারে এই কমান্ডটি সমস্ত রেকর্ড প্রিন্ট করবে যেখানে প্রথম ফিল্ডে লাল লেখা রয়েছে এবং দ্বিতীয় ক্ষেত্রে রয়েছে 5টির কম অক্ষর :
awk '$1 ~ /red/ && length($NF) < 5 { print }' flowers.txt
দ্রষ্টব্য:
- $NF এর ব্যবহার $2 ব্যবহার করার বিকল্প হিসেবে দ্বিতীয় ক্ষেত্রে যেতে - সম্ভব কারণ এটি শেষ ক্ষেত্র এবং এইভাবে NF (ক্ষেত্রের সংখ্যা) সমান
- দৈর্ঘ্য() ফাংশনটি ক্ষেত্রের দৈর্ঘ্য গণনা করতে ব্যবহৃত হয়
সুতরাং এটি উদাহরণ ফাইল থেকে একটি একক মিলে যাওয়া রেকর্ড ফেরত দেয়:
red rose
উপসংহার
ওক একটি কারণে লিনাক্সের সাথে সর্বজনীনভাবে অন্তর্ভুক্ত করা হয়েছে – এটি পাঠ্য অনুসন্ধান এবং প্রক্রিয়াকরণের জন্য একটি প্রধান সরঞ্জাম, যা আপনার সিস্টেমে কিছু ভুল হলে লগ এন্ট্রিগুলি দ্রুত খুঁজে পেতে বা গবেষণা ব্যবহারের জন্য ক্যাপচার করা ডেটা প্রক্রিয়াকরণের জন্য ব্যবহার করতে পারেন৷
আপনি যদি কখনও টেক্সট ফাইলগুলির একটি বড় সংগ্রহে একটি সাধারণ সন্ধান/প্রতিস্থাপনের চেয়ে বেশি কিছু করার চেষ্টা করে থাকেন, তবে আপনি রান না করেই আপনার সমস্ত পাঠ্য প্রোগ্রামেটিকভাবে প্রতিস্থাপন বা আপডেট করতে সক্ষম হওয়ার মূল্যটি জানতে পারবেন। পৃথক অনুসন্ধান/প্রতিস্থাপন কমান্ড।
আমাদের অন্যান্য লিনাক্স টিপস দেখুন!