উত্তর:
আপনি sed
এই জন্য ব্যবহার করতে পারেন । বিএসডি তে sed
:
echo "foo 'bar'" | sed -E "s/.*'([^']+)'.*/\\1/"
বা, -E
বিকল্প ছাড়া :
sed "s/.*'\([^']\+\)'.*/\1/"
এটি মাল্টলাইন ইনপুটটির জন্য কাজ করে না। তার জন্য আপনার প্রয়োজন:
sed -n "s/.*'\([^']\+\)'.*/\1/p"
( ) +
ব্যবহারের জন্য আমার কেবল তিনটি পালানোর অক্ষর প্রয়োজন \( \) \+
: এটি কার্যকরভাবে একই রকম:sed "s/.*'\([^']\+\)'.*/\1/"
sed -n "s/.*'\([^']\+\)'.*/\1/p"
যদিও গ্রেপ একটি নির্দিষ্ট গোষ্ঠীটিকে আউটপুট দিতে পারে না, তবে আপনার পরবর্তীটি অর্জনের জন্য আপনি লুকে হেড এবং পিছনে দৃ use়তার সাথে ব্যবহার করতে পারেন:
echo "foo 'bar'" | grep -Po "(?<=')[^']+(?=')"
grep -P
সমস্ত প্ল্যাটফর্মে উপলব্ধ নয়। তবে যদি এটি হয় তবে লুকেহেড / পেছন ব্যবহার করা সমস্যা সমাধানের খুব সুন্দর উপায়।