2. แทนที่โดยใช้ &
โดยหลักแล้ว sed สามารถใช้ & เพื่ออ้างอิงถึงสิ่งที่กำลังทำการค้นหาได้ เพื่อนำไปใช้อีกครั้งภายหลังได้
อธิบายง่ายๆโดยตัวอย่าง ดังนี้
sed 's/123/123 123/g' test.txt
ตัวอย่างนี้ จะทำการ copy ทำซ้ำตัวเอง โดยถ้า sed เจอ pattern ที่เหมือนกับ 123 ก็จะทำการแทนที่โดยเขียนตัวเองสองรอบ
เช่น ถ้าไฟล์ข้อความเป็น
123 abc
ผลลัพธ์ก็จะได้
123 123 abc
ก็ดูเหมือนจะดี แต่ถ้าตัวเลขที่ต้องการจะทำซ้ำนั้นไม่ได่มีแค่รูปแบบเดียว เช่น
123 abc
456 gef
789 tgh
ซึ่งผลลัพธ์ที่ต้องการ คือต้องการให้ SED พิมพ์ข้อมูลตัวเลขซ้ำสองครั้ง
ถ้าไม่ใช้ function เสริมใน SED แล้วล่ะก็
เราก็ต้องพิมพ์คำสั่งที่ยาวเหยียดเฉียดเมตร
มาถึงจุดนี้ Regular Expression จะเริ่มเข้ามามีบทบาท ทำให้ชีวิตเราง่ายขึ้น(มาก)
โดยเราจะใช้ RegExp เพื่อทำ pattern ที่จะใช้ในการ Match ถ้าพบว่า pattern ตรงกับ RegExp ก็จะเริ่มทำงานทันที
แต่ในเวลาที่จะแสดงผล เราไม่สามารถบอกให้แสดงผลด้วย RegExp ได้ เพราะ software จะไม่เข้าใจว่าเราต้องการแสดงอะไร
จึงต้องใช้ สัญลักษณ์ในการแทนสิ่งที่ตรงกับ RegExp ซึ่งใน SED จะใช้ & ในการแสดงผล
sed 's/[0-9]*/& &/g' test.txt
sed 's/[0-9][0-9]*/& &/g' test.txt
แค่นี้ ชีวิตก็ง่ายขึ้น
ไม่มีความคิดเห็น:
แสดงความคิดเห็น