การใช้ sed เพื่อแทนที่อักขระพิเศษ


14

การทำงานนี้จะแทนที่tomด้วยsamในไฟล์:

sed 's/tom/sam/g' file_1 > file_2

แต่นี่ไม่ได้:

sed 's/*****/sam/g' file_1 > file_2

เพื่อแทนที่ตัวอักษรพิเศษที่มีคำว่า***** samฉันลองสแลช\*แต่มีข้อผิดพลาด


2
คุณลองใช้คำสั่งอะไร\*และมีข้อผิดพลาดอะไรบ้าง
cuonglm

ฉันได้ลองแล้ว: sed 's / **** / sam / g' test.txt> test2.txt และผลลัพธ์มีข้อผิดพลาด: sed: bad regex '*****': นิพจน์ทั่วไปก่อนหน้าไม่ถูกต้อง - สิ่งนี้มี blackslash \ before the *
Rosebud

1
คุณอาจพยายามหลบหนีตัวละครพิเศษทุกตัว:sed 's/\*\*\*\*\*/sam/g'
taliezin

คำตอบ:


18

คุณต้องหลีกเลี่ยงอักขระพิเศษด้วยแบ็กสแลชที่\อยู่ด้านหน้าอักขระพิเศษเช่น:

sed 's/\*/t/g' test.txt > test2.txt


0

คุณต้องหนีอักขระพิเศษด้วยแบ็กสแลชที่\อยู่ด้านหน้าของอักขระพิเศษ \สำหรับกรณีของคุณหนีทุกอักขระพิเศษด้วยเครื่องหมายทับขวา

เช่น: **** boy is ****

sed 's/\*\*\*\*/sam/g' filename

ตอบ:

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