অন্য তালিকায় গ্রেপ করতে শব্দের একটি তালিকা ব্যবহার করুন


8

আমি এটিতে 250 লাইন সহ একটি তালিকা পেয়েছি। আউটপুটের তালিকা পেতে আমাকে একটি ওয়েব সার্ভারের মাধ্যমে তাদের চালাতে হবে। এই তালিকাটি, তবে আমার আগ্রহের চেয়ে আরও অনেকগুলি লাইন ফিরে আসে। বলুন, আমার list.txtহ'ল:

a.1
b.1
etc

তারপরে আউটপুটটি হ'ল output.txt:

a.1 a b c
a.2 b a b
a.3 d k o
b.1 b o p
b.2 o i y
b.3 p i y
etc

আউটপুট.টেক্সট-এ টেক্সট-টেক্সটে সমস্ত শব্দের অনুসন্ধান এবং তারপরে "ওয়ান্টেড" তালিকাটি ওয়ান্ট.টিএসটি উত্পন্ন করার জন্য গ্রেপ কমান্ডটি ব্যবহার করা সম্ভব? আমার আউটপুটটিতে পুরো লাইনটি আমার দরকার t

grep list.txt output.txt > wanted.txt

আমি এর কোন উদাহরণ খুঁজে পাইনি


তারা উভয়ই আপনার উদাহরণগুলির মতো বর্ণানুক্রমিক ক্রমে আছে?
অলি

না, আমি আমার list.txt একটি নির্দিষ্ট অ বর্ণানুক্রমিক আছে, কিন্তু output.txt বর্ণানুক্রমিক, কিন্তু আমি চাই এটি একই অ বর্ণানুক্রমিক আমার list.txt কেবল "হিট" ধারণ করে
Ditte

উত্তর:


11

আমি grepএই জন্য উপেক্ষা করব । এটি নিয়মিত প্রকাশের জন্য ভাল তবে মনে হচ্ছে আপনার এখানে সত্যই দরকার নেই। commদুটি ফাইলের তুলনা করতে এবং আপনাকে ছেদ দেখাতে পারে। আপনার সঠিক উদাহরণ ব্যবহার করে:

$ comm -12 list.txt output.txt 
a.1
b.1
etc

এটি যে কোনও গ্রেপের চেয়ে দ্রুততর তবে এটি বাছাই করা ফাইলগুলির উপর (খুব বেশি) নির্ভর করে। যদি তা না হয় তবে আপনি এগুলি প্রাক-বাছাই করতে পারেন তবে এটি আউটপুটকে পরিবর্তন করবে যাতে এটি খুব বাছাইও হয়।

comm -12 <(sort list.txt) <(sort output.txt) 

অন্যথা, এই উত্তর থেকে iiSeymour আপনার সাথে এটা করতে দেওয়া হবে grep। পতাকাগুলি একটি ইনপুট ফাইলের জন্য জিজ্ঞাসা করে এবং একটি স্থির-স্ট্রিং, পূর্ণ-শব্দ অনুসন্ধানে বাধ্য করে। এটি অর্ডের উপর নির্ভর করবে না তবে অর্ডের উপর নির্ভর করবে output.txt। আপনি যদি তালিকাটি.এসটিএসটিএসের ক্রমে ফাইলগুলি চান তবে তাদের বিপরীত করুন।

$ grep -wFf list.txt output.txt 
a.1
b.1
etc

যদি আপনার list.txtহয় সত্যিই বড়, আপনি একটু বেশি iteratively এই এই একটি সাজসরঁজাম এবং তাদের পৃথকভাবে grep প্রতিটি লাইন পাস করতে হবে পারে। এটি প্রসেসিংয়ের সময়কে ব্যাপকভাবে বৃদ্ধি করবে। উপরের দিকে আপনি output.txtএকবার পড়তে চাইছেন , তবে আপনি প্রতিটি লিস্ট.এসটি লাইনের জন্য এটি পড়তে এবং প্রক্রিয়া করতে চান। এটি ভয়ঙ্কর ... তবে এটি আপনার একমাত্র পছন্দ হতে পারে। উল্টো দিকে, এটি তখন list.txtআদেশ অনুসারে জিনিসগুলি বাছাই করে ।

$ while read line; do grep -wF "$line" output.txt; done < list.txt
a.1
b.1
etc

1
আসলেই স্মার্ট! -12 এর কারণ কী?
Ditte

3
-1প্রথম ফাইলের -2জন্য অনন্য লাইনগুলিকে দমন করে, দ্বিতীয় ফাইলের অনন্য -3লাইনগুলিকে দমন করে এবং উভয়ের পক্ষে সাধারণ লাইনগুলি দমন করে। কেবলমাত্র সাধারণ লাইনগুলি পেতে, আমরা অদ্বিতীয়গুলি দমন করি -12
অলি

চমৎকার! আমি মনে করি আমি কম্যান্ড কমান্ডটি ব্যবহার করব। এবং তারপরে আমি যখন আউটপুট.টিএসটিএস্টকে তালিকা.টিএসটিএস্টের মতো একই ক্রমানুসারে বাছাই করতে চাই, আমি কেবল কম -12 <(সাজানো তালিকা.টিএসটিএসটি) <(সাজানো আউটপুট.সেক্সট) পরে ব্যবহার করব?
Ditte

কম কমান্ড ফলাফল.txt এ পুরো লাইনটি আমাকে দেয়নি (এবং সেখান থেকে তথ্য পাওয়ার জন্য আমার এটি সমস্ত দরকার)। তবে যদি আমি গ্রেপ কমান্ডটি চেষ্টা করি তবে এটি আমাকে গ্রেপ: স্মৃতিশক্তি থেকে ছাড়িয়ে দেবে। তার মানে কি এটি খুব বড়?
Ditte

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