গ্রেপ, কম, বিশ্রী, সেড [বন্ধ] কখন ব্যবহার করবেন


17

আমি লিনাক্সের জগতে প্রবেশ করছি এবং কর্মক্ষেত্রে আমি grepআরও বেশি করে ব্যবহার করছি । এটি করে আমি বুঝতে পারি যে মাঝে মাঝে এটি আমার যা প্রয়োজন তা পর্যাপ্ত নয়।

আমি grepকয়েক দিন আগে লড়াই করে যাচ্ছিলাম এবং আমার একজন সহকর্মী, যিনি লিনাক্সের একজন সিনিয়র অ্যাডমিন, তিনি আমাকে ব্যবহার করতে বলেছেন awk। আমি কত দ্রুত ফলাফল পেয়ে স্তম্ভিত হয়ে গেলাম।

সুতরাং আমার প্রশ্ন আপনি যখন একে অপরের উপর ব্যবহার করতে চান? কাজ করার আগে grepএবং অনেক সময় ব্যয় করার আগে নিজেকে কী প্রশ্ন জিজ্ঞাসা করতে পারি , যখন আমি এটি দিয়ে awkসময়টি বাঁচাতে পারতাম ?


এটি একটি ভাল প্রশ্ন তবে এটি সত্যই খুব বিস্তৃত এবং প্রাথমিকভাবে মতামত ভিত্তিক। আপনার প্রশ্নের জবাব দেওয়ার জন্য, গ্রেকের ব্যবহারের জন্য বিশুদ্ধতার বিপরীতে সত্যই নির্ভর করে আপনি কতটা আরামদায়ক / সেড ব্যবহার করছেন তা নির্ভর করে। কিছু কিছু কারণ রয়েছে যার পরে কেউ এই ব্যবহার করতে পারে যেমন গ্রেপ যা দিচ্ছে তার চেয়ে বেশি নির্দিষ্ট কিছু সন্ধান করছে বা যদি আপনি কোনও নির্দিষ্ট স্ট্রিং (সেড ব্যবহার করে) ফাইলগুলি প্রতিস্থাপন / সম্পাদনা করার চেষ্টা করছেন। তবে আবার, সবগুলি আপনার আরামের স্তর এবং awk / সেড ব্যবহারের অভিজ্ঞতার উপর নির্ভর করে।
রাইকায়ো

7
ব্যবহার করুন lessথেকে দেখতে একটি ফাইল। কোনও ফাইলের মাধ্যমে অনুসন্ধানgrep করতে ব্যবহার করুন। একটি ফাইল সম্পাদনা করতে ব্যবহার করুন। ব্যবহার করুন উপর এবং আপনি যে ফাইলটি প্রক্রিয়া করতে চান কিছু আছে যখন গঠন (যেমন কলাম হিসাবে)। ব্যবহার করুন উপর যখন আপনি প্রধানত লাইন (যেমন টেক্সট মুছে ফেলতে অথবা অ্যাড লাইন হিসাবে) সাথে মোকাবিলা করতে চান। আমি নিশ্চিত যে কেউ 20-পৃষ্ঠাগুলির উত্তর লিখবেন যা আমার চেয়ে সম্পূর্ণ। sedawkgrepsedsedawk
স্যাটাস কাতসুর

হাই সাতো, এটি দৈর্ঘ্যের বিষয়ে নয়, তবে কী বলা হয়। এবং আপনার কয়েকটি লাইন খুব তথ্যপূর্ণ। ধন্যবাদ.
ফ্র্যাঙ্কগুথ্রি

উত্তর:


25

sedএবং awkসুপারসেটস grep, এমন কিছু জিনিস রয়েছে যা এক বা অন্যটির সাথে করা সহজ।

grep fooলেখা যেতে পারে sed '/foo/!d'বা awk /foo/, তবে বিবেচনা করুন:

grep -i foosed '/[fF][oO][oO]/!d'আপনি যদি GNU এর মতো অ-মানক এক্সটেনশানগুলি বিবেচনা না করতে চান তবে তা হতে হবে sed '/foo/I!d'। অথবা সঙ্গে awk: awk 'tolower($0) ~ /foo/'বা আবার একটি গনুহ এক্সটেনশান ব্যবহার করে: awk -v IGNORECASE=1 /foo/

অন্যান্য সরঞ্জামগুলির সাথে বিভিন্ন সরঞ্জামগুলিতে জিনিসগুলি ভাল এবং জটিল:

, grep

grepএকটি সাধারণ সরঞ্জাম তবে অপারেশনের খুব বিশেষ পদ্ধতি রয়েছে যা এর সাথে পুনরুত্পাদন করা শক্ত awkবা sed:

  • grep -i সংবেদনশীল মিলের ক্ষেত্রে (উপরে দেখুন)
  • grep -Fe "$string"স্থির স্ট্রিং অনুসন্ধানের জন্য (এর export string; awk 'index($0, ENVIRON["string"])'সাথে awkকোনও প্রত্যক্ষ সমতুল্য নয় sed)।
  • grep -rপুনরাবৃত্ত অনুসন্ধানের জন্য ( মানহীন )
  • ( মানহীন ) grep -P/ pcregrepপার্ল-মতো রিজেक्सপ্সের জন্য (কিছু sedবাস্তবায়নে পার্ল-জাতীয় রিজেক্সপ সমর্থন রয়েছে যদিও সর্বাধিক বড় নয়)
  • (মানহীন) grep -oমিলিত অংশটি ফেরত দিতে (বিভিন্ন লাইন awkবা sedএকই কাজটি করতে)
  • (মানহীন) grep -A/B/Cম্যাচের চারপাশে প্রসঙ্গে ফিরে আসা (আবার একইরকম ফ্যাশনে করতে ব্যথার সাথে sedবা awk)

sed

  • s/foo/bar/: sed এর sকমান্ডটিতে এমন বৈশিষ্ট্য রয়েছে যা কার্যকর করতে কার্যকর হয় awk:
  • s/foo\(.*\)bar/\1/g: ক্যাপচারিং (যদিও জিএনইউ এর সাথে এর gensub()জন্য এক্সটেনশন রয়েছে )
  • s/foo/bar/3: প্রতিটি লাইনের তৃতীয় ঘটনাটি প্রতিস্থাপন করুন
  • (অ-মানক): ইন-প্লেস ফাইল সম্পাদনা (যদিও এটি জিএনইউ দ্বারা সমর্থিত) awk এখন )।

awk

awk তিনটির মধ্যে সমৃদ্ধ সর্বাধিক বৈশিষ্ট্য।

  • সংখ্যা মোকাবেলার জন্য ভাল
  • কলামগুলিতে ফর্ম্যাট করা ইনপুট নিয়ে কাজ করার জন্য ভাল।
  • এর উত্সাহী অ্যারে সহ বিভিন্ন উত্স থেকে ডেটা আহরণ এবং একত্রিত করার জন্য ভাল।

Perl

perlব্যবহারিক এক্সট্রাকশন এবং রিপোর্টিং সরঞ্জাম হিসাবে তাদের মধ্যে সর্বোত্তম। এটি প্রাথমিকভাবে এর জন্য ডিজাইন করা হয়েছিল (সেই সরঞ্জাম হতে যা এই সমস্ত sed/awk অপ্রচলিত )।

perlপাঠ্য প্রক্রিয়াকরণে দক্ষতা অর্জন একটি গুরুতর সুবিধা দেয়। sedউদাহরণস্বরূপ কম সাধারণ কমান্ডগুলি দেখার আগেও আমি এটিতে কিছুটা সময় ব্যয় করার পরামর্শ দেব ।

কর্মক্ষমতা

থাম্বের একটি নিয়ম হিসাবে, সরঞ্জামটি আরও বিশেষায়িত, কার্যটিতে এটি সবচেয়ে দক্ষ। তবে এটি বাস্তবায়নের উপরও অনেক বেশি নির্ভর করে, টাস্ক এবং কয়েকটি অন্যান্য কারণ ও কার্য সম্পাদনের ট্রেড-অফ থাকতে পারে যা বিবেচনায় নেওয়া দরকার হতে পারে।

উদাহরণস্বরূপ, কিছু grepবা sedবাস্তবায়ন রয়েছে যা খুব দ্রুত, তবে উদাহরণস্বরূপ তারা মাল্টিবাইট অক্ষরকে সমর্থন করে না তাই কেবলমাত্র ইউএস-ইংলিশ পাঠ্যে মাল্টি-বাইট লোকলে সঠিকভাবে কাজ করতে পারে। বা এগুলি দ্রুত কারণ তারা একটি ছোট স্থির দৈর্ঘ্যের বাফারে কাজ করে এবং এভাবে নির্বিচার ইনপুটটিতে কাজ করতে পারে না ...


দুর্দান্ত উত্তর! আপনি কি সরঞ্জামগুলির দক্ষতা সম্পর্কে জানেন? আমি ওপির বক্তব্য সম্পর্কে বিভ্রান্ত হয়েছি, এটি awkতার চেয়ে অনেক দ্রুত grep
pfnuesel

@ পিএফএনইউজেল, এটি বাস্তবায়ন এবং ব্যবহারের ধরণের উপর নির্ভর করে। উদাহরণস্বরূপ, mawkখুব দক্ষ হিসাবে পরিচিত (তবে এটি মাল্টিবাইট চরিত্রগুলিকে সমর্থন করে না যা কারণ এটি অন্য কয়েকটি সরঞ্জামের তুলনায় বেশি দক্ষ)
স্টাফেন চ্যাজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.