ใช้ sed แทนที่สตริงที่มี $ และ (และ '


0

ในฐานะที่เป็นส่วนหนึ่งของเชลล์สคริปต์ฉันต้องการแทนที่

LIBTOOL='$(SHELL) $(top_builddir)/libtool'

กับ

LIBTOOL=./libtool

หมายเลขบรรทัดซอร์สคือ 528 ฉันพยายามใช้ sed ดังนี้

sed -e '528 s/LIBTOOL=\'\$(SHELL) \$(top_builddir)\/libtool'/LIBTOOL=.\/libtool/'**

แต่ฉันได้รับข้อผิดพลาด

ดังนั้นความช่วยเหลือใด ๆ จะได้รับการชื่นชม


1
คุณต้องการรวมข้อความแสดงข้อผิดพลาดไว้ในคำถามของคุณหรือไม่
Izzy

คำตอบ:


0

คุณได้รับใบเสนอราคาเดียวที่ไม่ใช้ค่า Escape ในนิพจน์ของคุณ (ดู\/libtool'/LIBTOOL) ดังนั้นนี่คือสิ่งที่ได้ผลสำหรับฉัน:

sed "528 s/LIBTOOL='\$(SHELL) \$(top_builddir)\/libtool'/LIBTOOL='.\/libtool'/" filename.ext

โปรดทราบว่าฉันไม่ได้รวม-eพารามิเตอร์เนื่องจากคาดว่าชื่อไฟล์จะอ่านนิพจน์จาก (และคุณให้นิพจน์ที่บรรทัดคำสั่ง - อย่าสับสนกับไฟล์นี้เพื่อประมวลผลไฟล์)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.