ทำไม sed จึงแสดงผล“ char 53: คำสั่ง `s 'ที่ไม่ถูกทำลาย


28

ทำไมสคริปต์ทุบตีนี้

ssh $SERVER bash <<EOF
sed -i "s/database_name: [^ ]*/database_name: kartable_$ME" $PARAM_FILE
exit
EOF

เอาท์พุท ->

sed: -e expression #1, char 53: unterminated `s' command

คำตอบ:


38

sคำสั่งในการsedใช้ไวยากรณ์ที่เฉพาะเจาะจง:

s/AAAA/BBBB/options

โดยที่sคำสั่งการแทนที่AAAAคือ regex ที่คุณต้องการแทนที่BBBBอยู่กับสิ่งที่คุณต้องการให้แทนที่ด้วยและoptionsเป็นตัวเลือกใด ๆ ของคำสั่งการทดแทนเช่น global ( g) หรือไม่สนใจเคส ( i)

ในกรณีเฉพาะของคุณคุณไม่มีเครื่องหมายสแลชสุดท้าย/หากคุณเพิ่มมันsedจะใช้งานได้:

➜  ~  sed 's/database_name: [^ ]*/database_name: kartable_$ME/'
database_name: something
database_name: kartable_$ME

info sed 'The "s" Command' รวมถึงคำอธิบายแบบเต็มและการใช้คำสั่ง s


9

ไม่มี/ที่สิ้นสุด

sed -i "s/database_name: [^ ]*/database_name: kartable_$ME/" $PARAM_FILE

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