$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5
আউটপুট কেন হয় না 65? লোভজনকভাবে [0-9]\+অংশটি মেলানো উচিত নয় ? আমি সেডকে কীভাবে সব মিলিয়ে বলতে পারি 65?
$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5
আউটপুট কেন হয় না 65? লোভজনকভাবে [0-9]\+অংশটি মেলানো উচিত নয় ? আমি সেডকে কীভাবে সব মিলিয়ে বলতে পারি 65?
উত্তর:
.*প্রথম লোভী - এটা এর ম্যাচিং foo 6। এটি সেখানে থামার একমাত্র কারণ হ'ল কারণ এর সাথে আর কোনও মিললে পুরো প্যাটার্নটি ম্যাচিং থেকে বিরত রাখতে পারে, তাই এটি এটির জন্য ছেড়ে 5যায় ([0-9]+)। ([0-9]*)পরিবর্তে আপনি যদি এটি তৈরি করেন .*তবে পুরো লাইনের সাথে এটি মিলবে এবং আপনি আপনার গ্রুপে কিছুই পাবেন না। এর চারপাশের একটি উপায় হ'ল প্রথম অংশটি সংখ্যার সাথে মেলে না tell
$ echo "foo 65 bar" | sed -n -e 's/[^0-9]*\([0-9]\+\).*/\1/p'
65