คำตอบของ SiegeX นั้นดีกว่าสำหรับกรณีนี้โดยเฉพาะ แต่คุณควรรู้วิธีส่งข้อความโดยพลการ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'
หรือเอกสาร "here here" แต่นั่นอาจเป็นเรื่องที่น่าอึดอัดใจเล็กน้อยกับสิ่งก่อสร้างที่คุณกำลังใช้:
LAT=$(sed 's/foo/bar/g' <<END
$LATLNG
END
)
หรือหากคุณใช้งานbash
และไม่กังวลเรื่องการพกพาคุณสามารถใช้ "here string":
sed 's/foo/bar/g' <<< "$LATLNG"