อือม หายไปนานเลยเรา เกือบเดือนเลยนะนี่
กลับมาต่อเรื่อง SED กันดีกว่า กับตอนที่ 5 ของเรา
มาต่อกันอีกเล็กน้อยกับ SED ในเรื่องของ substitute command (s///)
ซึ่งในคราวนี้เราจะมาต่อในเรื่องของ flag ที่จะนำมาใช้ใน command ซึ่งที่ใช้บ่อยๆก็คือ g หรือ global
วิธีใช้ก็คือ เวลาที่เราจะใช้ flag เราจะวางมันลงไปหลัง command เสมอ
(ก็คือ s///g) นั่นเอง
global มีความหมายว่าทำทั้งหมด หรือโดยนัยก็คือทำทั้งไฟล์นั่นเอง
จากตัวอย่างก็คือการ
ถึงจะเป็น Stream Editor แต่ไม่ได้หมายความว่าจะทำงานต่อเนื่องทั้งไฟล์ โดยปรกติ เวลาทำงาน SED ทำงานทีละบรรทัดไปจนตลอดทั้งไฟล์
ถ้าเราไม่ใช้ global flag จะทำให้ SED ทำงานเฉพาะตำแหน่งแรกที่หาพบของบรรทัดนั้นๆ
ถ้าต้องการให้ทำงานที่ทุกๆตำแหน่งที่พบบนไฟล์จะต้องเพิ่ม flag เข้าไปตัวนึงก็คือ flag g หรือ global
อืม ตัวอย่างนะ
ตัวอย่างอันนี้ก็คือ SED จะทำการตรวจจับทุกๆอย่างทุกๆตัวอักษรในไฟล์ old ยกเว้นช่องว่างอันนึง จากนั้นจะทำการหุ้มตัวอักษรเหล่านั้นด้วยวงเล็บ แล้วส่งไปเขียนในไฟล์ new
ตัวอย่างแรกจะทำเฉพาะตัวอักษรชุดแรกเท่านั้น ชุดต่อจากนั้นจะไม่มีผลอะไรด้วยเลย
sed 's/[^ ]*/(&)/' < old > new
ส่วนตัวอย่างที่สอง เมื่อใส่ g ต่อท้ายคำสั่ง จะให้ผลตลอดทั้งไฟล์ ทุกตำแหน่งในทุกบรรทัด
sed 's/[^ ][^ ]*/(&)/g' < old > new
อ้างอิงจาก http://www.grymoire.com/Unix/Sed.html