প্রতিটি পাশের কোলন দিয়ে যেকোন দৈর্ঘ্যের বর্ণমালার স্ট্রিংয়ের জন্য গ্রেপ


14

আপনি কীভাবে 1 থেকে 50 অক্ষরের বর্ণানুক্রমিক স্ট্রিংগুলির জন্য গ্রেপ করবেন (আদর্শভাবে, কোনও দৈর্ঘ্য খুব কার্যকর হবে) প্রতিটি পক্ষের কোলন দিয়ে - একটি সাধারণ ফলাফল স্ট্রিংযুক্ত সমস্ত লাইন :shopping:। এখনও অবধি আমি নীচে কোড পেয়েছি (আমি এটিতে কিছু বৈকল্পিক চেষ্টা করেছি) যা কাজ করে না:

grep ':[[:alnum:]]{1,100}:' ~/x.txt

আপনাকে কেবল স্যুইচটি grepঅন্তর্ভুক্ত করে এর প্রসারিত রেজেক্স ক্ষমতাগুলি সক্ষম করতে -Eহবে।
slm

উত্তর:


13

এর জন্য আপনাকে বর্ধিত নিয়মিত অভিব্যক্তি সক্ষম করতে হবে:

grep -E ':[[:alnum:]]+:' ~/x.txt

4

বেসিক নিয়মিত এক্সপ্রেশন সহ, আপনি এটি লিখতে পারেন:

grep ':[[:alnum:]]\{1,100\}:' ~/x.txt

দ্রষ্টব্য যে \{( উদাহরণস্বরূপ \+বা এর বিপরীতে হিসাবে \?) মান এবং পোর্টেবল এবং আসলে BRE সমতুল্য +এবং ?সাধারণত এর সাথে লেখা হয় \{: \{1,\}এবং \{0,1\}grep -Eযদিও এটি স্ট্যান্ডার্ড এবং পোর্টেবল, তাই আপনি এটির পাশাপাশি এটি ব্যবহার করতে পারেন কারণ এটি সেই ক্ষেত্রে আরও বেশি পঠনযোগ্য রিজেক্সপসের জন্য তৈরি করে।


1

আপনি একটি বর্ধিত নিয়মিত এক্সপ্রেশন ব্যবহার করছেন যাতে আপনার -E বিকল্পটি ব্যবহার করতে হবে:

grep -E ':[[:alnum:]]{1,100}:' ~/x.txt

ধন্যবাদ! আমি অন্য উত্তরটিকে সঠিক হিসাবে রেখেছি কারণ আমি আমার "আদর্শ" স্ক্রিপ্টটি শিরোনামটিতে লিখিনি, এবং আমি গুগল করা লোকেদের উত্তরটি অনুলিপি করে ভুল উত্তরটি পেস্ট করতে চাই না, তবে আমি আপনার ব্যবহার করব। :)

1
@TorThommesen - আপনার প্রশ্নটির শিরোনামটি সঠিক না হলে আপনি এটি সম্পাদনা করতে পারবেন।
slm

0

যেহেতু অন্য কারও এটি উল্লেখ করা হয়নি, আপনি এটিও ব্যবহার করতে পারেন egrep, যা আমি এটি বুঝতে পেরেছি তার সমতুল্য grep -E

egrep ':[[:alnum:]]{1,100}:' ~/x.txt

1
egrepEREs সহ গ্রেপ করার historicalতিহাসিক আদেশ ছিল। গ্রেপ এবং egrep এর কার্যকারিতাটি (অনেক আগে) -E বিকল্পের সাথে গ্রেপের সাথে একীভূত হয়েছে। egrepএখন অপ্রচলিত / অবহেলিত হিসাবে বিবেচিত হয় (তবে কিছু লোক এখনও এর অভ্যস্ত বলে সম্ভবত যাওয়ার সম্ভাবনা নেই)।
স্টাফেন চেজেলাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.