গ্রেপ রিজেক্স হোয়াইটস্পেস আচরণ


90

আমার কাছে একটি পাঠ্য ফাইল রয়েছে যাতে এরকম কিছু থাকে:

12,34 EUR 
 5,67 EUR
 ...

'EUR' এর আগে একটি সাদা জায়গা আছে এবং আমি 0, XX EUR উপেক্ষা করি।

আমি চেষ্টা করেছিলাম:

grep '[1-9][0-9]*,[0-9]\{2\}\sEUR' => didn't match !

grep '[1-9][0-9]*,[0-9]\{2\} EUR' => worked !

grep '[1-9][0-9]*,[0-9]\{2\}\s*EUR' => worked !

grep '[1-9][0-9]*,[0-9]\{2\}\s[E]UR' => worked !

কেউ আমাকে ব্যাখ্যা করতে পারবেন, অনুগ্রহ, আমি কেন ব্যবহার করতে পারবেন না \sকিন্তু \s*এবং \s[E]মিলেছে?

ওএস: উবুন্টু 10.04, গ্রেপ ভি 2.5

উত্তর:


124

এটি \sগ্রেপ 2.5 এবং নতুন সংস্করণগুলির (হ'ল পুরানো গ্রেপের মধ্যে একটি বাগ?) পরিচালনার ক্ষেত্রে আচরণের পার্থক্যের মতো দেখায় like আমি আপনার ফলাফলটি গ্রেপ ২.৪.৪ দিয়ে নিশ্চিত করেছি, তবে গ্রেপ ২.6.৩ (উবুন্টু ১০.১০) ব্যবহার করার সময় আপনার গ্রিপসের চারটিই কাজ করে।

বিঃদ্রঃ:

GNU grep 2.5.4
echo "foo bar" | grep "\s"
   (doesn't match)

যদিও

GNU grep 2.6.3
echo "foo bar" | grep "\s"
foo bar

সম্ভবত কম ঝামেলা (যেমন \sনথিভুক্ত নয়):

Both GNU greps
echo "foo bar" | grep "[[:space:]]"
foo bar

আমার পরামর্শ হ'ল পরিবর্তে \s... ব্যবহার [ \t]*বা এর [[:space:]]মতো কিছু ব্যবহার করা এড়ানো ।


24
বা ঠিক [:space:], প্রাক্তন জন্য। এর মতো:cat file | grep "[[:space:]]"
কিরিল কিরভ

এই বাগ অনুরোধ মেইল-archive.com/bug-grep@gnu.org/msg02686.html অনুযায়ী গ্রিপ (অন্য দৃষ্টিকোণ) এর নতুন সংস্করণে এটি একটি বাগ বলে মনে হচ্ছে তবে শেষ বিবৃতিটি কেন মেলে?
মিল্ডে

4
@ মিল্ডে, ফলোআপ পোস্টটি নোট করুন মেইল -আর্টিভ.com/bug-grep@gnu.org/msg02689.html যেখানে সেই বাগ রিপোর্টটি অবৈধ এবং বন্ধ হিসাবে চিহ্নিত করা হয়েছে (সুতরাং এটি আরও নতুন গ্রেপের কোনও বাগ হিসাবে বিবেচনা করা হয় না)।
কামাল

4
@ মিল্ড, আমি যে গ্রেপ ডকুমেন্টেশনগুলি পরীক্ষা করেছি (পুরানো বা নতুন) বাস্তবে তা মোটেও বোঝায় না \s। আমি বলব এর আচরণ "অপরিজ্ঞাত"। পরিবর্তে [: স্পেস:] ব্যবহার করুন, যা পুরানো এবং নতুন গ্রেপের নথি হিসাবে কাজ করে।
কামাল

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