সেড এবং অ্যাজকের মধ্যে পার্থক্য কী? [বন্ধ]


497
  • অজ ও সিডের মধ্যে পার্থক্য কী?
  • কোন ধরণের অ্যাপ্লিকেশন সেড এবং অ্যাজকি সরঞ্জামগুলির জন্য সর্বোত্তম ব্যবহারের ক্ষেত্রে?

2
ইউনিক্স.স্ট্যাকেক্সচেঞ্জ সম্পর্কিত একটি সম্পর্কিত কিউএ: গ্রেপ, অ্যাজক এবং সেডের জন্য কোনও প্রাথমিক টিউটোরিয়াল আছে?
দানি

উত্তর:


549

sedএকটি স্ট্রিম সম্পাদক is এটি প্রতি লাইনের ভিত্তিতে অক্ষরের স্ট্রিমের সাথে কাজ করে। এটিতে আদিম প্রোগ্রামিং ভাষা রয়েছে যাতে গোটো-স্টাইলের লুপগুলি এবং সাধারণ শর্তাদি (প্যাটার্ন ম্যাচিং এবং অ্যাড্রেস ম্যাচিংয়ের পাশাপাশি) অন্তর্ভুক্ত রয়েছে। মূলত দুটি মাত্র "ভেরিয়েবল" রয়েছে: প্যাটার্ন স্পেস এবং হোল্ড স্পেস। স্ক্রিপ্টগুলির পঠনযোগ্যতা কঠিন হতে পারে। গাণিতিক ক্রিয়াকলাপগুলি দুর্দান্তভাবে অদ্ভুত।

sedকমান্ড লাইন বিকল্প এবং ভাষা বৈশিষ্ট্যগুলির জন্য বিভিন্ন স্তরের সমর্থন সহ বিভিন্ন সংস্করণ রয়েছে।

awkপ্রতি লাইন ভিত্তিতে সীমানাঙ্কিত ক্ষেত্রগুলির দিকে লক্ষ্য করা যায়। এটা অনেক আরো জোরালো সহ প্রোগ্রামিং নির্মান হয়েছে if/ else, while, do/ whileএবং for(গ-শৈলী এবং অ্যারে পুনরাবৃত্তির)। ভেরিয়েবল এবং একক-মাত্রিক এসোসিয়েটিভ অ্যারে প্লাস (আইএমও) কুলডজে মাল্টি-ডাইমেনশন অ্যারেগুলির জন্য সম্পূর্ণ সমর্থন রয়েছে। গাণিতিক ক্রিয়াকলাপগুলি সি এর সাথে সাদৃশ্যপূর্ণ এটির printfকার্যকারিতা রয়েছে। " এডাব্লুকে" তে " কে " এর অর্থ " কে প্রোগ্রামিং ল্যাঙ্গুয়েজ" খ্যাতি ( হো এবং ডাব্লু আইবারবার্গকে ভুলে যাওয়ার নয় ) বইয়ের "কর্নিঘান এবং রিচি" তেমন " কে এরনিখন" for কেউ ব্যবহার করে একাডেমিক চুরির ডিটেক্টর লিখতে পারেন awk

GNU awk( gawk) এর সর্বশেষ সংস্করণে সত্য বহুমাত্রিক অ্যারে সহ অসংখ্য এক্সটেনশন রয়েছে। এবং awkসহ অন্যান্য বিভিন্নতা রয়েছে ।mawknawk

উভয় প্রোগ্রামই পাঠ্য নির্বাচন এবং প্রক্রিয়াকরণের জন্য নিয়মিত অভিব্যক্তি ব্যবহার করে।

আমি sedযেখানে পাঠ্যের নিদর্শন রয়েছে সেখানে ব্যবহার করতে চাই। উদাহরণস্বরূপ, আপনি কিছু পাঠকের সমস্ত নেতিবাচক সংখ্যা প্রতিস্থাপন করতে পারেন যা "বিয়োগ চিহ্ন-এর পরে অঙ্কগুলির ক্রম" পরে (যেমন "-231.45") "অ্যাকাউন্টেন্টের বন্ধনী" ফর্মের সাথে (যেমন "(231.45)" ) এটি ব্যবহার করে (যার উন্নতির জায়গা রয়েছে):

sed 's/-\([0-9.]\+\)/(\1)/g' inputfile

আমি awkযখন পাঠ্যটি সারি এবং কলামগুলির মতো দেখায় বা awkতাদের "রেকর্ড" এবং "ক্ষেত্রগুলি" বোঝায় তখন আমি ব্যবহার করব । যদি আমি উপরের মতো একই ক্রিয়াকলাপটি করতে যাচ্ছিলাম তবে কেবলমাত্র একটি সাধারণ কমা বিস্মৃত ফাইলে তৃতীয় ক্ষেত্রে আমি এর মতো কিছু করতে পারি:

awk -F, 'BEGIN {OFS = ","} {gsub("-([0-9.]+)", "(" substr($3, 2) ")", $3); print}' inputfile

অবশ্যই সেগুলি কেবল খুব সহজ উদাহরণ যা প্রতিটি প্রদান করতে সক্ষমতার সম্পূর্ণ পরিসীমা চিত্রিত করে না।



@ ডেনিসউইলিইমসন - আমি কেবল অসুবিধে শিখলে কি আমার কোনও অসুবিধে হয়? অ্যাড কি সিডের চেয়ে বেশি ব্যবহৃত হয়?
বাষ্প

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

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

1
ম্যাকের উপর থেকে যে কেউ এটিকে হোঁচট খাচ্ছে তার জন্য কেবল একটি এফওয়াইআই, প্রথম সেড উদাহরণের জন্য "সেড-ই '/ - ([[0-9] +। [0-9] *) / (\ 1) / জি'" চেষ্টা করুন
ড্যানিয়েল শ্মিট

124

1) অজক এবং সেডের মধ্যে পার্থক্য কী?

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

2) কোন ধরণের অ্যাপ্লিকেশনটি সেড এবং অ্যাজকে সরঞ্জামগুলির জন্য সর্বোত্তম ব্যবহারের ক্ষেত্রে?

উপসংহার: খুব সাধারণ পাঠ্য পার্সিংয়ের জন্য সেড ব্যবহার করুন। এর বাইরে যে কোনও কিছুই করা, অজানা ভাল। প্রকৃতপক্ষে, আপনি পুরোপুরি শেড খাঁজতে পারেন এবং কেবল বিশ্রী ব্যবহার করতে পারেন। যেহেতু তাদের ফাংশনগুলি ওভারল্যাপ এবং অ্যাডক আরও বেশি কিছু করতে পারে, তাই কেবল জঞ্জাল ব্যবহার করুন। আপনি আপনার শেখার বক্ররেখাও হ্রাস করবেন।


7
লার্নিং কার্ভ সম্পর্কে খুব ভাল পয়েন্ট .. অনেকগুলি সরঞ্জাম মিক্সআপ করতে পারে .. সুতরাং আমি গ্রেপ শেখা পছন্দ করতাম এবং কেবল মাত্র বিশ্রী শিখি .. সেড সম্পর্কে ভুলে যাই :)
আউটিলার

174
Ough যথেষ্ট সেড। (দুঃখিত, আমার করতে হয়েছিল)
গ্রেগ এম ক্রসাক

8
আমি শেড যদিও শিখতে অনেক সহজ, তাই আপনার জন্য এটি অ্যাকাউন্ট করা প্রয়োজন। আপনি যেমন খোলার উপর দক্ষতা অর্জন করতে শিখছেন, ততক্ষণে কীভাবে কীভাবে করণীয় আপনি জানেন না এমন জিনিসের জন্য দ্রুত এটি ব্যবহার করতে সক্ষম হয়ে শিড শিখতে কার্যকর হতে পারে।
দিদিয়ার এ।

1
@ গ্রেগক্রাসাক আপনি আমার দিনটি তৈরি করেছেন। (দুঃখিত, আমার করতে হয়েছিল)
আবেল ক্লেলেজো

15
খাঁজবেন না sed, সিনট্যাক্সের 's/search/replace'চেয়ে টাইপ করা সহজ awkএবং আপনার বেশিরভাগ সময় প্রয়োজন।
sjas

54

উভয় সরঞ্জামই পাঠ্য নিয়ে কাজ করার জন্য বোঝানো হয় এবং এমন দুটি কার্য রয়েছে যা উভয় সরঞ্জামই ব্যবহার করতে পারে।

আমার জন্য এগুলি পৃথক করার নিয়মটি হ'ল: sedকোনও টেক্সট সম্পাদকে ম্যানুয়ালি আপনি যে কাজগুলি করতে পারবেন তা স্বয়ংক্রিয় করতে ব্যবহার করুন । এজন্য এটিকে স্ট্রিম এডিটর বলা হয় । (আপনি ভিএম-তে পাঠ্য সম্পাদনা করতে একই কমান্ড ব্যবহার করতে পারেন)। awkআপনি যদি পাঠ্য বিশ্লেষণ করতে চান, অর্থ ক্ষেত্রগুলি গণনা করতে চান, মোট গণনা করুন, কাঠামোগুলি বের করুন এবং পুনর্গঠিত করুন ইত্যাদি ব্যবহার করুন Use

এছাড়াও আপনি সম্পর্কে ভুলবেন না করা উচিত grepgrepআপনি যদি কেবল কোনও পাঠ্যে (ফাইল) কিছু সন্ধান / এক্সট্রাক্ট করতে চান তবে ব্যবহার করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.