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

คำสั่ง

sed   ‘s/oldword/newword’  <oldfile   >newfile

ตัวอย่าง
ไฟล์ A.txt มีข้อความดังนี้
I  like a book .

ต้องการแปลงคำว่า book เป็น dog เก็บไว้ในไฟล์ B.txt จะใช้คำสั่งดังต่อไป
$ sed  ‘s/book/dog’  <A.txt  >B.txt

เมื่อเราใช้คำสั่ง
$ cat  B.txt

จะได้ข้อความดังนี้
I like a dog .

นอกจากการทำ redirection โดยใช้อินพุตแบบไฟล์ธรรมดาแล้ว เราสามารถใช้วิธีการ pipe ( | ) จาก output ของคำสั่งอื่นมาเป็นอินพุตของ sed ได้ดังตัวอย่าง

$ echo  ‘ I  love MANU ‘
I love  MANU
$ echo ‘I love MANU’  |  sed  ‘s/MANU/Liverpool/’
  I love Liverpool

ไม่ยากเลยใช่ไหมครับ : )

วีดีโอตัวอย่าง
ตอนที่ 1 (อัปเดต 30/6/2011) :

Advertisements

เทคนิคการเขียน shell script I

sed technique

+การลบบรรทัดว่างๆ

sed ‘/^$/d’  <inputfile>

ex

ex -s เป็น silent mode ของ vim ซึ่งการใช้งานจะคล้ายๆ กับ sed แต่จะใช้ คำสั่งของ vim ซึ่งคนที่เก่ง vim จะได้ประโยชน์จากคำสั่งนี้มากมาย

+การลบบรรทัดว่างๆและบันทึกลงไฟล์เดิม

( echo  “g/^$/d”  ;echo “wq” ) | ex -s filename

+search & replace example

(echo  “%s/word1/word2/” ; echo “wq”) | ex -s filename
หรือ (echo  “%s/word1/word2/” ; echo “update”) | ex -s filename

ลิงค์ที่น่าสนใจ

http://vim.wikia.com/wiki/Best_Vim_Tips