การค้นหาและแทนที่ข้อความ

Bash:
การค้นหาและแทนที่ข้อความ

วิธีการ:

นี่คือวิธีที่คุณใช้พลังของการค้นหาและแทนที่ใน bash:

  1. สลับข้อความภายในสตริงโดยใช้ sed:
echo "Hello world" | sed 's/world/universe/'
# ผลลัพธ์: Hello universe
  1. แทนที่ข้อความในไฟล์ และบันทึกการเปลี่ยนแปลง:
sed -i 's/old_text/new_text/g' file.txt
  1. ใช้ตัวแปรในการค้นหาและแทนที่ข้อความ:
old="apple"
new="banana"
sed "s/$old/$new/g" <<< "I like apple pies"
# ผลลัพธ์: I like banana pies

จำไว้ว่า g ที่ต่อท้ายหมายถึง “ทั่วไป” ดังนั้นคุณจะเปลี่ยนทุกการจับคู่ในบรรทัด ไม่ใช่แค่ครั้งแรก

ลงลึก

เรามีเครื่องมือสำหรับการประมวลผลข้อความในระบบที่คล้ายกับ Unix มานานแล้ว sed ย่อมาจาก Stream Editor คือหนึ่งในเครื่องมือเหล่านั้น และมันมีมาตั้งแต่ทศวรรษ 1970s มันไม่ได้เพียงสำหรับการแทนที่อย่างง่าย sed ยังสามารถตัดและหั่นข้อความในรูปแบบที่ซับซ้อนได้อีกด้วย

มีทางเลือกอื่น? แน่นอน awk มีความก้าวหน้ากว่าเล็กน้อยและสามารถทำงานได้อย่างยอดเยี่ยมกับคอลัมน์และแถว สำหรับการแก้ไขอย่างรวดเร็ว grep สามารถช่วยคุณค้นหาสิ่งต่าง ๆ ได้ แต่มันไม่สามารถแทนที่ได้ - เหมือนเป็นคนดู

ภายใต้ฝาครอบ sed ใช้ regular expressions ซึ่งเหมือนกับตัวแทนของการค้นหาที่ได้รับสเตียรอยด์ พวกเขาสามารถจับคู่กับรูปแบบใด ๆ ที่คุณสามารถนึกถึงได้ มันทำให้ sed มีพลังอย่างมาก แต่ก็เป็นเรื่องยากที่จะเรียนรู้ให้เชี่ยวชาญ

ดูเพิ่มเติม