Bash:
การค้นหาและแทนที่ข้อความ
วิธีการ:
นี่คือวิธีที่คุณใช้พลังของการค้นหาและแทนที่ใน bash:
- สลับข้อความภายในสตริงโดยใช้
sed
:
echo "Hello world" | sed 's/world/universe/'
# ผลลัพธ์: Hello universe
- แทนที่ข้อความในไฟล์ และบันทึกการเปลี่ยนแปลง:
sed -i 's/old_text/new_text/g' file.txt
- ใช้ตัวแปรในการค้นหาและแทนที่ข้อความ:
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
มีพลังอย่างมาก แต่ก็เป็นเรื่องยากที่จะเรียนรู้ให้เชี่ยวชาญ
ดูเพิ่มเติม
man sed
สำหรับคู่มือเกี่ยวกับsed
- บทนำสู่
sed
- Regular Expressions for Beginners
- The Art of Command Line สำหรับเทคนิค bash เพิ่มเติม (https://github.com/jlevy/the-art-of-command-line)