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)