একই স্ট্রিং একাধিকবার মুদ্রণ থেকে গ্রেপকে কীভাবে প্রতিরোধ করবেন?


15

আমি যদি নিম্নলিখিত ফাইলগুলি গ্রেপ করে থাকি:

These are words
These are words
These are words
These are words

... শব্দের জন্য These, এটি স্ট্রিংটি These are wordsচারবার মুদ্রণ করবে ।

আমি কীভাবে একাধিকবার পুনরাবৃত্ত স্ট্রিং মুদ্রণ থেকে গ্রেপকে আটকাতে পারি? অন্যথায়, নকল লাইনগুলি সরানোর জন্য আমি কীভাবে গ্রেপের আউটপুট ম্যানিপুলেট করতে পারি?


ম্যাচের ক্রমটি কি আউটপুট রাখা উচিত? অন্যথায় জন 1024 পোস্ট করা কমান্ডটি কাজ করবে।
কোস

উত্তর:


23

ইউনিক্স দর্শনের এমন একটি সরঞ্জাম রয়েছে যা একটি কাজ করে এবং সেগুলি ভাল করে। এই ক্ষেত্রে, grepসেই সরঞ্জামটি যা কোনও ফাইল থেকে পাঠ্য নির্বাচন করে। সদৃশ আছে কিনা তা জানতে, পাঠ্যটি বাছাই করুন। সদৃশ অপসারণ করতে, কেউ -uবিকল্পটি ব্যবহার করে sort। এভাবে:

grep These filename | sort -u

sortঅনেক বিকল্প আছে: দেখুন man sort। আপনি যদি সদৃশগুলি গণনা করতে চান বা ডুপ্লিকেট কী বা না তা নির্ধারণের জন্য আরও জটিল স্কিম পেতে চান, তবে সাজানোর আউটপুটটি এখানে পাইপ করুন uniq: grep These filename | sort | uniqএবং manবিকল্পগুলির জন্য ইউনিফিক দেখুন ।


2

grepআপনি যদি কেবল একটি একক স্ট্রিং সন্ধান করেন তবে ব্যবহার এবং একটি অতিরিক্ত স্যুইচ

grep -m1 'These' filename

থেকে man grep

-m NUM, --max-count=NUM
        Stop reading a file after NUM matching lines.  If the input is
        standard input from a regular file, and NUM matching lines are
        output, grep ensures that the standard input is positioned  to
        just  after  the  last matching  line  before exiting, regardless
        of the presence of trailing context lines.  This enables a calling
        process to resume a search.  When grep stops after NUM matching
        lines, it outputs any trailing context lines.  When the -c or
        --count option is also used, grep does not output a count greater
        than NUM.  When the -v or --invert-match option is also used, grep
        stops after outputting NUM non-matching lines.

বা ব্যবহার করে awk ;)

awk '/These/ {print; exit}' foo

IMHO সবচেয়ে উপযুক্ত উত্তর হ'ল - মি পতাকা m আমি আপনাকে এটি আপনার উত্তরের শীর্ষে রাখার পরামর্শ দিচ্ছি। খুব ভাল উত্তর!
সের্গেই কোলোডিয়াজনি

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