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