इस विशेष मामले के लिए सीजएक्सएक्स का जवाब बेहतर है, लेकिन आपको यह भी पता होना चाहिए कि कैसे मनमाना पाठ पास करना है 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"