শব্দ সীমানা গ্রেপ


22

জিএনইউ ডকুমেন্টেশনের সাথে যুক্ত:

‘\<’ Match the empty string at the beginning of word.
‘\>’ Match the empty string at the end of word.

আমার / ইত্যাদি / fstab এর মত দেখাচ্ছে:

/dev/sdb1       /media/fresh      ext2   defaults     0 0

আমি / মিডিয়া / তাজা থাকার জন্য গ্রেপ সত্য / মিথ্যা ফিরিয়ে দিতে চাই। আমি ব্যবহার করার চেষ্টা \<এবং \>কিন্তু এটা কাজ করে নি। কেন?

egrep '\</media/fresh\>' /etc/fstab

কার্যসংক্রান্ত:

egrep '[[:blank:]]/media/fresh[[:blank:]]' /etc/fstab

তবে দেখতে দেখতে কুরুচিপূর্ণ।

আমার গ্রেপ হয় 2.5.1


4
আমি মনে করি /শব্দের চরিত্র হিসাবে বিবেচনা করা হয় না, তাই রেজেক্সগুলি মেলে না - "
ফিলিপ আলভারেজ

উত্তর:


27

\<এবং \>যথাক্রমে একটি শব্দের শুরু এবং শেষে খালি স্ট্রিংটি মেলে এবং কেবলমাত্র শব্দ উপাদানগুলির অক্ষর:

[[:alnum:]_]

থেকে man grep:

Word-constituent characters are letters, digits, and the underscore.

সুতরাং, আপনার রেজেক্স ব্যর্থ হচ্ছে কারণ /একটি বৈধ শব্দ উপাদান উপাদান নয়।

আপনার চারপাশের ফাঁকা স্থানগুলির পরিবর্তে, আপনি কোনও শব্দের সাথে মেলে -wঅপশনটি ব্যবহার করতে পারেন grep:

grep -wo '/media/fresh' /etc/fstab

উদাহরণ:

$ grep -wo '/media/fresh' <<< '/dev/sdb1       /media/fresh      ext2   defaults     0 0'
/media/fresh

আমি আমার প্রশ্ন পোস্ট করার পরে হিসাবে পরিসংখ্যান আমি কী অর্জন করতে চাই তার জন্য কোনও পরামর্শ?
ফিলিপ আলভারেজ

@ ফিলিপএলভারেজ আমার সম্পাদনাগুলি পরীক্ষা করুন ..
হিমাইল

1

\<(এবং এছাড়াও \b) এর সাথে এই সমস্যাটি কেবলমাত্র নয় /, সমস্ত শব্দহীন অক্ষরের ক্ষেত্রেও প্রযোজ্য । (যেমন [[:alnum:]]এবং অন্যান্য অক্ষরগুলি _।)

সমস্যাটি হ'ল রেজেক্স ইঞ্জিন সর্বদা /পরবর্তী অ্যাঙ্করটির অনুসন্ধানের সময় একটি অ-শব্দের চরিত্রটিকে বাইপাস করবে \<। এজন্য আপনার /ঠিক পরে -শব্দহীন অক্ষর রাখা উচিত নয় \<। আপনি যদি এটি নির্মাণ করে করেন তবে কিছুই মিলবে না।

গ্রেপ বিকল্পের -wবিকল্প, এরকম কিছু হবে:

egrep "(^|\W)/media/fresh($|\W)"
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.