วันศุกร์ที่ 12 ธันวาคม พ.ศ. 2551

คำสั่งในการ แทนที่ สิ่งที่ค้นหาใน linux

คำสั่งในการ แทนที่ สิ่งที่ค้นหาใน linux

sed -i 's/202.143.142.21/www.google.com/g' test.txt


ใช้งานด้วยคำสั่ง
$ ./sed_i.py "OLD" "NEW" filename
ถ้าเจอ จะแทนที่ และบันทึกไว้ในชื่อเดิม แต่สำรองไฟล์ไว้ด้วย ในชื่อ filename.bak

บันทึกการค้นหาและแทนที่ไฟล์ในไดเรคทอรี่ ด้วยคำสั่ง sedจะค้นหาคำว่า old และแทนที่ด้วยคำว่า new ทุกไฟล์ในไดเรคทอรี่ นำไฟล์ใหม่ไปเก็บใน ./temp# mkdir temp# for i in *; do if [ -f $i ]; then sed -e 's/old/new/g' $i > temp/$i fidone
เพิ่มเติมทำเป็นคำสั่งสำเร็จรูป# OLD=old# NEW=new# mkdir temp# for i in *; do if [ -f $i ]; then sed -e "s/$OLD/$NEW/g" $i > temp/$i fidone
เพิ่มเติม 2จากตัวอย่างข้างต้น อาจใช้ sed ได้ดังนี้# sed -i "s/old/new/g" file.txt
สำหรับอักขระพิเศษ เช่น / สามารถแทนด้วย \\/เช่น แทนที่ /usr/bin เป็น /usr/local/bin# sed -i "s/\\/usr\\/bin/\\/usr\\/local\\/bin/g" file.txt
หรืออาจใช้ตัวคั่นเป็น @ แทน จากตัวอย่างจะกลายเป็น# sed -i "s@/usr/bin@/usr/local/bin@g" file.txt
สำหรับอักขระพิเศษคือ New-line แทนด้วย \nยังหาวิธีใช้ค้นไม่ได้ แต่สามารถใช้ในการแทนที่ได้ เช่น# sed -i "s/old\nline/new\nline/g" file.txt แบบนี้ใช้ไม่ได้
แต่แบบนี้# sed -i "s/line one/line one\nline two/g" file.txt แบบนี้ใช้ได้

ไม่มีความคิดเห็น: