এই বিশেষ ক্ষেত্রে সিয়েজএক্সের উত্তর আরও ভাল, তবে কীভাবে স্বেচ্ছাসেবী পাঠ্যে পাঠানো যায় তাও আপনার জানা উচিত sed।
sedএটি দ্বিতীয়, তৃতীয়, ইত্যাদি পরামিতি হিসাবে ফাইলের নামগুলি প্রত্যাশা করে এবং যদি এটি কোনও ফাইলের নাম খুঁজে না পায় তবে এটি তার স্ট্যান্ডার্ড ইনপুট থেকে পড়ে। সুতরাং যদি আপনার কাছে এমন পাঠ্য রয়েছে যা আপনি কোনও ফাইলের মধ্যে না প্রক্রিয়া করতে চান তবে আপনাকে এটিতে পাইপ করতে হবে sed। সবচেয়ে সোজা উপায় হ'ল:
echo "blah blah" | sed 's/blah/blam/g'
সুতরাং আপনার উদাহরণ হয়ে উঠবে:
LAT=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\1/g')
LON=$(echo "$LATLNG" | sed 's/(\(.*\),\(.*\))/\2/g')
বিকল্প (আরও ভাল তবে আরও অস্পষ্ট) পদ্ধতি
যদি আপনি ভাবেন যে কোনও সম্ভাবনা আছে যা $LATLNGড্যাশ দিয়ে শুরু হতে পারে, বা আপনি যদি পেডেন্টিক হতে চান তবে আপনার printfপরিবর্তে আপনার ব্যবহার করা উচিত echo:
printf '%s' "$LATLNG" | sed 's/foo/bar/g'
বা একটি "এখানে নথি", তবে আপনি যে নির্মাণটি ব্যবহার করছেন তা এটি কিছুটা বিশ্রী হতে পারে:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
অথবা আপনি যদি ব্যবহার করছেন bashএবং বহনযোগ্যতার বিষয়ে উদ্বিগ্ন না হন তবে আপনি একটি "এখানে স্ট্রিং" ব্যবহার করতে পারেন:
sed 's/foo/bar/g' <<< "$LATLNG"