Sed - แทนที่ข้อความด้วยสัญลักษณ์ › [ซ้ำกัน]

ปัญหาที่ต้องแก้ไข

เพิ่มสัญลักษณ์ › ในส่วนทดแทนของคำสั่ง sed

ต้องการเอาต์พุต

PS1=AccountName>

ความพยายามล้มเหลว

sed -i -e "41s/$/\n PS1\=${abasicstring}\>" /etc/bashrc

คำอธิบายค่าความพยายาม

41s --› ค้นหาแถวที่ 41

$ = regex เลือกจุดสิ้นสุดของแถว

\n = เพิ่มบรรทัดใหม่

PS1\=${abasicstring} --› เพิ่ม PS1=ชื่อบัญชี

\> --> ความพยายามของฉันที่จะหลบหนี ›


person DRPY7    schedule 22.03.2021    source แหล่งที่มา
comment
หากคุณต้องการเพิ่มบรรทัดใหม่ให้กับไฟล์ ให้ใช้ 41a ไม่ใช่ 41s   -  person Barmar    schedule 23.03.2021
comment
คุณไม่จำเป็นต้องยกเว้น = หรือ > ในสตริงการแทนที่   -  person Barmar    schedule 23.03.2021


คำตอบ (1)


ใช้คำสั่ง a เพื่อเพิ่มบรรทัดใหม่

sed -i -e "41 a PS1='${abasicstring}>'" /etc/bashrc
person Barmar    schedule 22.03.2021
comment
มันทำงานได้อย่างสมบูรณ์แบบ แต่ฉันได้รับข้อผิดพลาด LINE1: bash: /etc/bashrc: บรรทัด 42: ข้อผิดพลาดทางไวยากรณ์ใกล้โทเค็นที่ไม่คาดคิด newline' LINE2: bash: /etc/bashrc: line 42: PS1=TESTING›' ----- แก้ไข: ค่าต้องอยู่ในเครื่องหมายคำพูด ช่างเถอะ. ขอขอบคุณอีกครั้งสำหรับความช่วยเหลือทั้งหมด - person DRPY7; 23.03.2021
comment
คุณต้องมีเครื่องหมายคำพูดล้อมรอบค่าเนื่องจาก > มีความหมายพิเศษในเชลล์ - person Barmar; 23.03.2021