, grep এটি জিএনইউ / লিনাক্স কমান্ড লাইনের সর্বাধিক ব্যবহৃত সরঞ্জামগুলির মধ্যে একটি। খুব সাধারণ সরঞ্জাম সত্ত্বেও এটি আপনাকে প্রচুর সংখ্যক ক্রিয়াকলাপ সম্পাদন করতে দেয়। এটি পূর্ববর্তী কমান্ডের আউটপুট ইত্যাদিতে নির্দিষ্ট পয়েন্টগুলি সনাক্ত করতে সক্ষম হতে পাইপগুলির সাথে বিশেষত একসাথে ব্যবহৃত হয় etc. তবে এখানে একটি টুল রয়েছে যার নাম হল ইরেপ যা -E বিকল্পের সাথে গ্রেপ চালানোর সমতুল্য।
ই "এক্সটেনডেড রেজেক্স" থেকে আসে যা -E বিকল্পটি সক্রিয় করে এবং আপনার বিকল্পটি ব্যবহার না করে ডিফল্টরূপে যেমন ইরেপিতে থাকে তা। যে, আপনি ব্যবহার করতে পারেন নিয়মিত এক্সপ্রেশন বর্ধিত। এই টিউটোরিয়ালে আমি নিয়মিত এক্সপ্রেশনগুলি কীভাবে হয়, সেগুলি কীভাবে ব্যবহার করা যায় এবং কী কী * * নিক্সে রয়েছে তা ব্যাখ্যা করতে যাব না। আমি উদাহরণস্বরূপ কিছু কার্যকর কাজের উদাহরণ দেখাব যা আপনি উদাহরণস্বরূপ করতে পারেন ...
গ্রেপ, egrep এবং fgrep একই রকম। বাস্তবে, egrep গ্রেপ-ই এর সমতুল্য এবং fgrep গ্রেপ-এফ এর সমতুল্য। এটি, আমাদের উদ্বেগের ক্ষেত্রে, এটি নিয়মিত অভিব্যক্তি হিসাবে নিদর্শনগুলিকেও ব্যাখ্যা করবে।
আপনি করতে পারেন একটি লাইন বা শব্দ অনুসন্ধান করুন এক বা একাধিক ফাইলে, যেমন গ্রেপের ক্ষেত্রেও রয়েছে। উদাহরণস্বরূপ, কল্পনা করুন যে আপনি স্ন্যাপ.টেক্সট নামের একটি ফাইলে এবং বর্তমান ডিরেক্টরিতে সমস্ত টেক্সট ফাইলগুলিতে উবুন্টু শব্দটি অনুসন্ধান করতে চান:
egrep ubuntu snap.txt
egrep ubuntu *.txt
অনুসন্ধানও হতে পারে পুনরাবৃত্তি বর্তমান ডিরেক্টরিটির সম্পূর্ণ বিষয়বস্তু অনুসন্ধান করতে:
egrep -r "hola mundo" *
এখনও অবধি সঠিক শব্দ বা স্ট্রিং অনুসন্ধান করা হয়েছিল, এটি হ'ল আপার এবং লোয়ার কেস (কেস-সংবেদনশীল) বিবেচনায় নেওয়া, তবে আপনি যদি কেস-সংবেদনশীল মোডে এটি করতে চান, তারা বড় হাতের বা ছোট হাতের নাগরিকের বিষয় নয়, আপনি নিম্নলিখিতটি ব্যবহার করতে পারেন (আপনি যদি ডাব্লু যোগ করেন তবে এটি কেবল সম্পূর্ণ মিল খুঁজে পায়):
egrep -i "ejemplo" documento.txt
egrep -iw "ejemplo" documento.txt
কাকতালীয় ঘটনা নয়, দেখান ফাইলের নাম যেখানে এই ম্যাচগুলি পাওয়া গেছে:
egrep -l hola *.txt
কেবল প্যাটার্ন বা শব্দটি দেখান একটি দস্তাবেজের মধ্যে অনুসন্ধান:
egrep -o printf hola.c
মনে রাখবেন যে আপনি যে সম্ভাবনাগুলি কল্পনা করতে পারেন তা ব্যবহার করতে পারেন। আপনি আগে দেখা বেশ কয়েকটি বিকল্প একত্রিত করতে পারেন বা আপনি অন্যান্য বিকল্পগুলির সাথে পরিপূরক করতে পারেন যেমন -A এন এবং -বি এন, যেখানে এন আপনি পূর্বে (পূর্বে) এবং পরে (পরে) প্রদর্শন করতে চান তার সংখ্যা ম্যাচ বা উভয় একই সময়ে (সি), যাতে আপনি দেখতে পান ম্যাচটি কী ঘিরে রয়েছে:
egrep -A 2 "printf" hola.c
egrep -B 2 "printf" hola.c
egrep -C 2 printf hola.c
কোনও মিল রয়েছে এমন লাইনগুলি দমন করুন এবং কেবল মেলে না এমনগুলি দেখান:
egrep -v "dos" números.doc
অথবা আপনি যদি পছন্দ করেন তবে আপনি ব্যবহার করতে পারেন একাধিক শব্দ বা -e এর সাথে মেলে। উদাহরণস্বরূপ:
egrep -v -e "uno" -e "dos" -e "tres" números.txt
আপনি ব্যবহার করেন -সি কেবল মিলের সংখ্যা গণনা করতে পারে, বা মিলেছে না এমন রেখার সংখ্যাটি দেখানোর জন্য -v এর মাধ্যমে এটি উল্টান। উদাহরণ স্বরূপ:
egrep -c "include" main.c
egrep -v -c "include" main.c
আর যদি লাইন নম্বর প্রদর্শন করুন যেখানে ম্যাচটি ঘটেছে এবং যথাক্রমে অবস্থানটিও এটি দখল করে:
egrep -n "void" hola.c
egrep -o -b "printf" hola.c
এবং পাশাপাশি নিয়মিত অভিব্যক্তি এর ক্ষমতা বাড়ানো যেতে পারে। উদাহরণস্বরূপ, হ্যালো দিয়ে শুরু হওয়া এবং বাই দিয়ে শেষ হওয়া একটি লাইন সন্ধান করুন বা হ্যালো এরপরে যা শুরু হবে তারপরে যথাক্রমে এবং ম্যাচ বাই যথাক্রমে উপস্থিত হবে:
* নিম্নলিখিত কমান্ডটির সংশোধন: পাঠক ম্যানুয়েল আলকোসারের মন্তব্যে ধন্যবাদ আমি নিম্নলিখিত আদেশটি সংশোধন করতে সক্ষম হয়েছি, যেহেতু একটি ত্রুটি হয়েছিল।
egrep '^Hola.*adiós$' ejemplo.txt
egrep "Hola.*adiós" ejemplo.txt
তবে আপনি যদি গ্রেপের সাথে পার্থক্য সম্পর্কে অবাক হন তবে এখানে একটি উদাহরণ রয়েছে যা এটি আপনার কাছে পরিষ্কার করে দেবে ... গ্রেপ ব্যবহারের ক্ষেত্রে -E ছাড়া আপনার ব্যবহার করা উচিত সিকোয়েন্স ক্রম যাতে এটি বিশেষ চরিত্রগুলিকে এর মতো ব্যাখ্যা করে, অন্যথায় এটি এগুলিকে বিবেচনায় না নিয়ে যেমন প্যাটার্নটি ব্যাখ্যা করে। অন্যদিকে, egrep বা গ্রেপ-ই সহ এটি তাদের অ্যাকাউন্টে নেবে। উদাহরণ স্বরূপ:
grep '^no\(fork\|group\)' /etc/group
এটি সমান হবে:
grep -E '^no(fork|group)' /etc/group
egrep '^no(fork|group)' /etc/group
এটি, এটি নোফোর্ক বা নোগ্রুপের সাথে শুরু হওয়া মিলের লাইনগুলির সন্ধান করবে। তবে যদি আপনি পালানোর ক্রমগুলি ছাড়াই গ্রেপের প্রথম প্রকাশটি ব্যবহার করেন তবে এটি কী করবে তা অনুসন্ধান কংক্রিট প্যাটার্ন না (কাঁটাচামচ | গ্রুপ):
grep 'no(fork|group)' /etc/group
আপনি অনুসন্ধান করতে পারেন বর্ণমালা রেঞ্জ, বা নির্দিষ্ট মান যেমন নির্দিষ্ট আইপি সনাক্ত করতে:
cat /etc/networks | egrep "192.168.1.[5-9]"
cat /etc/networks | egrep "192.168.[1-3].[5-9]"
cat /etc/networks | egrep "192.168.1.[0-3]|[5-9]"
egrep 192.168.4.[10,40] networks
আপনি যদি পছন্দ করেন তবে আপনি আরও সুনির্দিষ্ট অনুসন্ধান করতে অন্যান্য নিয়মিত অভিব্যক্তি ব্যবহার করতে পারেন। যেমন | একটি খুঁজে কাকতালীয় বা অন্য:
egrep -i '^(printf|scanf)' hola.c
এমনকি আপনি সনাক্ত করতে পারেন বড় হাতের অক্ষর, ছোট হাতের অক্ষর, কেবল বর্ণমালার অক্ষর বা বর্ণমালা ইত্যাদি, অন্যান্য এক্সপ্রেশন যেমন: [: অ্যালনাম:], [: আলফা:], [: ডিজিট:], [: নিম্ন:], [: মুদ্রণ:], [: পাঙ্ক:], [: স্পেস:], [: উপরের:] ইত্যাদি উদাহরণস্বরূপ, বড় হাতের সন্ধানের জন্য:
egrep [[:upper:]] diccioario
আমি আশা করি এটি আপনাকে সহায়তা করে ... শীঘ্রই আমি এটি নিবেদিত একটি নিবন্ধে নিয়মিত প্রকাশের ব্যাখ্যা করব ...
শুভ সন্ধ্যা
কয়েকটি মন্তব্য ...
আপনি 'egrep' কমান্ডটি ব্যাখ্যা করেছেন তবে 'egrep' এবং 'grep' এর মধ্যে পার্থক্য রাখবেন না, এটি এখানে যা হওয়া উচিত।
উদাহরণস্বরূপ:
গ্রেপ সহ: আইপি -4 এ | গ্রেপ '[0-9] \ +'
Egrep সহ: আইপি -4 এ | egrep '[0-9] +'
আহ, এবং এটি ভুল, 'উদাহরণস্বরূপ "হ্যালো। * বাই" উদাহরণ.txt'; এখানে সাফল্যটি ঘটে যখন ফাইলে একটি লাইন থাকে যা 'হ্যালো' স্ট্রিং সহ যা কিছু অনুসরণ করে এবং 'বিদায়' অনুসরণ করে, লাইনটি আসলেই শুরু হয়ে যায় এবং যা কিছুতেই শেষ হয়।
এই নিবন্ধটি যা বলে তা হবে:
উদাহরণস্বরূপ '^ হ্যালো। * বাই $' উদাহরণ.txt
এবং সমস্ত বিকল্প, বা প্রায় সব (আমি এটি পরীক্ষা করে থামব না) হ'ল 'গ্রেপ' এর বিকল্পগুলি কেবল 'এগ্রিপ' নয়।
সেরা শুভেচ্ছা
ত্রুটিটি রিপোর্ট করার জন্য ধন্যবাদ। আপনি নিয়মিত প্রকাশগুলিতে কী মন্তব্য করেন, আমি ইতিমধ্যে এটি দ্বিতীয় অনুচ্ছেদে রেখেছি। আমি তাদের কাছে একটি নির্দিষ্ট নিবন্ধ উত্সর্গ করব, কারণ অনেকগুলি রয়েছে এবং এই নিবন্ধটি খুব বেশি সময় নিতে পারে। একটি শুভেচ্ছা!
হ্যালো আবার, আইজাক।
দ্বিতীয় অনুচ্ছেদে আপনি মূলত বলেছেন, বা বলা উচিত ছিল যে 'এস্রেপ' হ'ল 'গ্রেপ-ই' এর একটি উপন্যাস, তবে আপনি 'এগ্রেপ' কিছু নিয়মিত অভিব্যক্তির সাহায্যে ব্যবহার করেন নি যা আলাদাভাবে লেখা হয় ' গ্রেপ '।
বর্ধিত নিয়মিত প্রকাশের ব্যাখ্যা দেওয়ার জন্য একটি নিবন্ধ উত্সর্গ করা আমার কাছে দুশ্চিন্তার মতো বলে মনে হচ্ছে কারণ এর মতো সাইট রয়েছে যা বিজ্ঞাপন দেয় না এবং জিএনইউ সম্প্রদায়ের জন্য খুব গুরুত্বপূর্ণ তথ্যমূলক কাজ করে: https://www.rexegg.com/
আমি এখানে ট্রলিংয়ের জন্য লিখছি না, এই সমস্তগুলির সাথে আমার উদ্দেশ্য হ'ল কেউ যদি এই এন্ট্রিটি পড়েন 'এগ্রিপ' বা 'গ্রেপ' কী করে তা দেখার জন্য, দয়া করে অন্যান্য উত্সগুলি দেখুন, এই এন্ট্রিটি কোনও কিছুরই রেফারেন্স হতে পারে না, এটি সামান্য ব্যাখ্যা করেছে, খারাপভাবে , অতিশয় তথ্য সরবরাহ করে এবং বিভ্রান্তিকর হতে পারে, বিশেষত যাদের জন্য জিএনইউ এবং এটি যে শক্তিশালী সরঞ্জামগুলি অফার করে তার কোনও জ্ঞান নেই।
অবশেষে, আপনি আমার প্রথম মন্তব্যের (^ $) পরে আমি চিহ্নিত হওয়া বাগটি সংশোধন করে দিয়েছি। অন্যান্য সাইটগুলির মতো আপনারও সেই ব্যক্তির উদ্ধৃতি দেওয়া উচিত ছিল যিনি সংশোধন করেছেন, বা কমপক্ষে বলতে পারেন যে এটি একটি সংশোধন, এটি জিএনইউ ঘাঁটির অংশ, এই ব্লগটি যেই বেস দিয়ে শুরু হয়েছিল এবং হয়েছে নিখোঁজ.
একটি অভিবাদন।
আপনার দৃষ্টিভঙ্গির জন্য আপনাকে ধন্যবাদ।
ffff