Unix / Linux - นิพจน์ทั่วไปพร้อม SED
ในบทนี้เราจะพูดถึงรายละเอียดเกี่ยวกับนิพจน์ทั่วไปกับ SED ใน Unix
นิพจน์ทั่วไปคือสตริงที่สามารถใช้เพื่ออธิบายลำดับอักขระต่างๆ นิพจน์ทั่วไปถูกใช้โดยคำสั่ง Unix ต่างๆรวมถึงed, sed, awk, grepและในขอบเขตที่ จำกัด มากขึ้น vi.
ที่นี่ SED หมายถึง stream editor. ตัวแก้ไขที่เน้นสตรีมนี้สร้างขึ้นเพื่อเรียกใช้สคริปต์โดยเฉพาะ ดังนั้นอินพุตทั้งหมดที่คุณป้อนเข้าไปจะผ่านและไปที่ STDOUT และจะไม่เปลี่ยนไฟล์อินพุต
เรียกเสน่ห์
ก่อนที่เราจะเริ่มต้นโปรดตรวจสอบให้แน่ใจว่าเรามีสำเนาของไฟล์ /etc/passwd ไฟล์ข้อความที่จะใช้งานได้ sed.
ดังที่ได้กล่าวไว้ก่อนหน้านี้ sed สามารถเรียกใช้โดยการส่งข้อมูลผ่านไปป์ดังต่อไปนี้ -
$ cat /etc/passwd | sed
Usage: sed [OPTION]... {script-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression = script
...............................
cat คำสั่งทิ้งเนื้อหาของ /etc/passwd ถึง sedผ่านท่อเข้าไปในช่องว่างรูปแบบของ sed พื้นที่รูปแบบคือบัฟเฟอร์งานภายในที่ sed ใช้สำหรับการดำเนินการ
ไวยากรณ์ทั่วไป sed
ต่อไปนี้เป็นไวยากรณ์ทั่วไปสำหรับ sed -
/pattern/action
ที่นี่ pattern เป็นนิพจน์ทั่วไปและ actionเป็นหนึ่งในคำสั่งที่กำหนดในตารางต่อไปนี้ ถ้าpattern ถูกละไว้ action ดำเนินการสำหรับทุกบรรทัดตามที่เราได้เห็นข้างต้น
จำเป็นต้องใช้อักขระสแลช (/) ที่ล้อมรอบรูปแบบเนื่องจากใช้เป็นตัวคั่น
ซีเนียร์ | ช่วงและคำอธิบาย |
---|---|
1 | p พิมพ์บรรทัด |
2 | d ลบบรรทัด |
3 | s/pattern1/pattern2/ แทนที่การเกิดขึ้นครั้งแรกของ pattern1 ด้วย pattern2 |
การลบบรรทัดทั้งหมดด้วย sed
ตอนนี้เราจะเข้าใจวิธีการลบบรรทัดทั้งหมดด้วย sed วิงวอนอีกครั้ง; แต่ตอนนี้ sed ควรใช้ไฟล์editing command delete lineแสดงด้วยตัวอักษรเดี่ยว d -
$ cat /etc/passwd | sed 'd'
$
แทนที่จะเรียกใช้ sed โดยการส่งไฟล์ผ่านไพพ์ sed สามารถสั่งให้อ่านข้อมูลจากไฟล์ดังตัวอย่างต่อไปนี้
คำสั่งต่อไปนี้จะเหมือนกับในตัวอย่างก่อนหน้านี้ทุกประการโดยไม่มีคำสั่ง cat -
$ sed -e 'd' /etc/passwd
$
ที่อยู่ sed
Sed ยังรองรับที่อยู่ ที่อยู่คือตำแหน่งเฉพาะในไฟล์หรือช่วงที่ควรใช้คำสั่งแก้ไขเฉพาะ เมื่อ sed ไม่พบแอดเดรสมันจะดำเนินการกับทุกบรรทัดในไฟล์
คำสั่งต่อไปนี้จะเพิ่มแอดเดรสพื้นฐานให้กับคำสั่ง sed ที่คุณใช้อยู่ -
$ cat /etc/passwd | sed '1d' |more
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$
สังเกตว่าหมายเลข 1 จะถูกเพิ่มก่อน delete editคำสั่ง คำสั่งนี้สั่งให้ sed ดำเนินการคำสั่งแก้ไขในบรรทัดแรกของไฟล์ ในตัวอย่างนี้ sed จะลบบรรทัดแรกของ/etc/password และพิมพ์ไฟล์ที่เหลือ
ช่วงที่อยู่ sed
ตอนนี้เราจะเข้าใจวิธีการทำงานกับ the sed address ranges. แล้วถ้าคุณต้องการลบมากกว่าหนึ่งบรรทัดออกจากไฟล์ล่ะ? คุณสามารถระบุช่วงที่อยู่ด้วย sed ดังต่อไปนี้ -
$ cat /etc/passwd | sed '1, 5d' |more
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$
คำสั่งดังกล่าวจะถูกนำไปใช้กับทุกบรรทัดตั้งแต่ 1 ถึง 5 ซึ่งจะเป็นการลบห้าบรรทัดแรก
ลองใช้ช่วงที่อยู่ต่อไปนี้ -
ซีเนียร์ | ช่วงและคำอธิบาย |
---|---|
1 | '4,10d' สายที่เริ่มต้นจาก 4 วันจนถึง 10 วันจะถูกลบออก |
2 | '10,4d' เพียง 10 THสายจะถูกลบออกเพราะ sed ไม่ทำงานในทิศทางตรงกันข้าม |
3 | '4,+5d' สิ่งนี้จับคู่บรรทัดที่ 4 ในไฟล์ลบบรรทัดนั้นลบห้าบรรทัดถัดไปจากนั้นหยุดการลบและพิมพ์ส่วนที่เหลือ |
4 | '2,5!d' ลบทุกอย่างยกเว้นนี้เริ่มต้นจาก 2 ครั้งจนถึง 5 THบรรทัด |
5 | '1~3d' สิ่งนี้จะลบบรรทัดแรกก้าวข้ามสามบรรทัดถัดไปจากนั้นลบบรรทัดที่สี่ Sed ยังคงใช้รูปแบบนี้ต่อไปจนจบไฟล์ |
6 | '2~2d' สิ่งนี้บอกให้ sed ลบบรรทัดที่สองก้าวข้ามบรรทัดถัดไปลบบรรทัดถัดไปและทำซ้ำจนกว่าจะถึงจุดสิ้นสุดของไฟล์ |
7 | '4,10p' สายที่เริ่มต้นตั้งแต่ 4 วันจนถึง 10 ปีบริบูรณ์จะพิมพ์ |
8 | '4,d' สิ่งนี้สร้างข้อผิดพลาดทางไวยากรณ์ |
9 | ',10d' นอกจากนี้ยังจะสร้างข้อผิดพลาดทางไวยากรณ์ |
Note - ขณะใช้ไฟล์ p คุณควรใช้ไฟล์ -nตัวเลือกเพื่อหลีกเลี่ยงการพิมพ์บรรทัดซ้ำ ๆ ตรวจสอบความแตกต่างระหว่างสองคำสั่งต่อไปนี้ -
$ cat /etc/passwd | sed -n '1,3p'
Check the above command without -n as follows −
$ cat /etc/passwd | sed '1,3p'
คำสั่งเปลี่ยนตัว
คำสั่งการแทนที่แสดงโดย sจะแทนที่สตริงใด ๆ ที่คุณระบุด้วยสตริงอื่นที่คุณระบุ
ในการแทนที่สตริงหนึ่งด้วยอีกสตริงหนึ่ง sed จำเป็นต้องมีข้อมูลว่าสตริงแรกสิ้นสุดที่ใดและสตริงการแทนที่เริ่มต้น สำหรับสิ่งนี้เราดำเนินการต่อด้วยการบูตสองสายโดยใช้เครื่องหมายทับ (/) ตัวละคร
คำสั่งต่อไปนี้แทนที่เหตุการณ์แรกบนบรรทัดของสตริง root ด้วยสตริง amrood.
$ cat /etc/passwd | sed 's/root/amrood/'
amrood:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
..........................
เป็นสิ่งสำคัญมากที่จะต้องสังเกตว่าสิ่งยั่วยวนจะทดแทนเฉพาะการเกิดครั้งแรกบนเส้น หากรูทสตริงเกิดขึ้นมากกว่าหนึ่งครั้งในบรรทัดจะมีการแทนที่การจับคู่แรกเท่านั้น
เพื่อให้ sed ดำเนินการแทนที่ส่วนกลางให้เพิ่มตัวอักษร g ท้ายคำสั่งดังนี้ -
$ cat /etc/passwd | sed 's/root/amrood/g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
...........................
ธงเปลี่ยนตัว
มีแฟล็กที่มีประโยชน์อื่น ๆ อีกมากมายที่สามารถส่งผ่านได้นอกเหนือจาก g แฟล็กและคุณสามารถระบุได้มากกว่าหนึ่งครั้ง
ซีเนียร์ | ตั้งค่าสถานะและคำอธิบาย |
---|---|
1 | g แทนที่การแข่งขันทั้งหมดไม่ใช่แค่นัดแรก |
2 | NUMBER แทนที่เพียงจำนวนวันแข่งขัน |
3 | p หากมีการทดแทนให้พิมพ์ช่องว่างรูปแบบ |
4 | w FILENAME หากทำการแทนที่แล้วให้เขียนผลลัพธ์ไปที่ FILENAME |
5 | I or i จับคู่ในลักษณะที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ |
6 | M or m นอกเหนือจากพฤติกรรมปกติของอักขระนิพจน์ทั่วไปพิเศษ ^ และ $ แฟล็กนี้ทำให้ ^ จับคู่สตริงว่างหลังขึ้นบรรทัดใหม่และ $ เพื่อให้ตรงกับสตริงว่างก่อนขึ้นบรรทัดใหม่ |
การใช้ตัวคั่นสตริงทางเลือก
สมมติว่าคุณต้องทำการแทนที่สตริงที่มีอักขระสแลชไปข้างหน้า ในกรณีนี้คุณสามารถระบุตัวคั่นอื่นได้โดยระบุอักขระที่กำหนดไว้หลังs.
$ cat /etc/passwd | sed 's:/root:/amrood:g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
ในตัวอย่างข้างต้นเราได้ใช้ : เป็น delimiter แทนที่จะใช้เครื่องหมายทับ / เพราะเราพยายามค้นหา /root แทนที่จะเป็นรากธรรมดา
แทนที่ด้วย Empty Space
ใช้สตริงการแทนที่ว่างเพื่อลบสตริงรูทจากไฟล์ /etc/passwd ไฟล์ทั้งหมด -
$ cat /etc/passwd | sed 's/root//g'
:x:0:0::/:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
การทดแทนที่อยู่
หากคุณต้องการแทนที่สตริง sh ด้วยสตริง quiet เฉพาะในบรรทัดที่ 10 คุณสามารถระบุได้ดังนี้ -
$ cat /etc/passwd | sed '10s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/quiet
ในทำนองเดียวกันหากต้องการทำการแทนที่ช่วงที่อยู่คุณสามารถทำสิ่งต่อไปนี้ -
$ cat /etc/passwd | sed '1,5s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/quiet
daemon:x:1:1:daemon:/usr/sbin:/bin/quiet
bin:x:2:2:bin:/bin:/bin/quiet
sys:x:3:3:sys:/dev:/bin/quiet
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
ดังที่คุณเห็นจากผลลัพธ์ห้าบรรทัดแรกมีสตริง sh เปลี่ยนไปเป็น quietแต่เส้นที่เหลือไม่ถูกแตะต้อง
คำสั่งจับคู่
คุณจะใช้ p ตัวเลือกพร้อมกับ -n ตัวเลือกในการพิมพ์บรรทัดที่ตรงกันทั้งหมดดังนี้ -
$ cat testing | sed -n '/root/p'
root:x:0:0:root user:/root:/bin/sh
[root@ip-72-167-112-17 amrood]# vi testing
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
การใช้นิพจน์ทั่วไป
ในขณะที่จับคู่รูปแบบคุณสามารถใช้นิพจน์ทั่วไปซึ่งให้ความยืดหยุ่นมากขึ้น
ตรวจสอบตัวอย่างต่อไปนี้ซึ่งตรงกับบรรทัดทั้งหมดที่ขึ้นต้นด้วยdaemonแล้วลบออก -
$ cat testing | sed '/^daemon/d'
root:x:0:0:root user:/root:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
ต่อไปนี้เป็นตัวอย่างที่ลบบรรทัดทั้งหมดที่ลงท้ายด้วย sh -
$ cat testing | sed '/sh$/d'
sync:x:4:65534:sync:/bin:/bin/sync
ตารางต่อไปนี้แสดงอักขระพิเศษสี่ตัวที่มีประโยชน์มากในนิพจน์ทั่วไป
ซีเนียร์ | ตัวละครและคำอธิบาย |
---|---|
1 | ^ ตรงกับจุดเริ่มต้นของบรรทัด |
2 | $ ตรงกับจุดสิ้นสุดของบรรทัด |
3 | . จับคู่อักขระเดี่ยวใด ๆ |
4 | * จับคู่อักขระก่อนหน้าเป็นศูนย์หรือมากกว่า |
5 | [chars] จับคู่อักขระใด ๆ ที่กำหนดในตัวอักษรโดยที่อักขระเป็นลำดับของอักขระ คุณสามารถใช้อักขระ - เพื่อระบุช่วงของอักขระ |
จับคู่อักขระ
ดูนิพจน์เพิ่มเติมเพื่อสาธิตการใช้งาน metacharacters. ตัวอย่างเช่นรูปแบบต่อไปนี้ -
ซีเนียร์ | นิพจน์และคำอธิบาย |
---|---|
1 | /a.c/ จับคู่บรรทัดที่มีสตริงเช่น a+c, a-c, abc, matchและ a3c |
2 | /a*c/ จับคู่สตริงเดียวกันพร้อมกับสตริงเช่น ace, yaccและ arctic |
3 | /[tT]he/ จับคู่สตริง The และ the |
4 | /^$/ จับคู่บรรทัดว่าง |
5 | /^.*$/ จับคู่ทั้งบรรทัดไม่ว่าจะเป็นอะไรก็ตาม |
6 | / */ จับคู่ช่องว่างอย่างน้อยหนึ่งช่อง |
7 | /^$/ ตรงกัน blank เส้น |
ตารางต่อไปนี้แสดงชุดอักขระที่ใช้บ่อย -
ซีเนียร์ | ตั้งค่าและคำอธิบาย |
---|---|
1 | [a-z] จับคู่อักษรตัวพิมพ์เล็กตัวเดียว |
2 | [A-Z] จับคู่ตัวอักษรตัวพิมพ์ใหญ่ตัวเดียว |
3 | [a-zA-Z] ตรงกับตัวอักษรเดียว |
4 | [0-9] จับคู่หมายเลขเดียว |
5 | [a-zA-Z0-9] จับคู่ตัวอักษรหรือตัวเลขตัวเดียว |
คีย์เวิร์ดคลาสตัวละคร
คำหลักพิเศษบางคำสามารถใช้ได้โดยทั่วไป regexpsโดยเฉพาะยูทิลิตี้ GNU ที่ใช้ regexps. สิ่งเหล่านี้มีประโยชน์มากสำหรับการทำให้นิพจน์ทั่วไปลดความซับซ้อนและเพิ่มความสามารถในการอ่าน
ตัวอย่างเช่นตัวละคร a through z และตัวละคร A through Zเป็นคลาสอักขระหนึ่งตัวที่มีคีย์เวิร์ด [[:alpha:]]
การใช้คีย์เวิร์ดคลาสอักขระตัวอักษรคำสั่งนี้จะพิมพ์เฉพาะบรรทัดเหล่านั้นในไฟล์ /etc/syslog.conf ไฟล์ที่ขึ้นต้นด้วยตัวอักษร -
$ cat /etc/syslog.conf | sed -n '/^[[:alpha:]]/p'
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
uucp,news.crit /var/log/spooler
local7.* /var/log/boot.log
ตารางต่อไปนี้เป็นรายการคีย์เวิร์ดคลาสอักขระที่มีอยู่ทั้งหมดใน GNU sed
ซีเนียร์ | คลาสตัวละครและคำอธิบาย |
---|---|
1 | [[:alnum:]] ตัวอักษรและตัวเลข [az AZ 0-9] |
2 | [[:alpha:]] ตามตัวอักษร [az AZ] |
3 | [[:blank:]] อักขระว่าง (ช่องว่างหรือแท็บ) |
4 | [[:cntrl:]] ควบคุมอักขระ |
5 | [[:digit:]] หมายเลข [0-9] |
6 | [[:graph:]] อักขระที่มองเห็นได้ (ไม่รวมช่องว่าง) |
7 | [[:lower:]] อักษรตัวพิมพ์เล็ก [az] |
8 | [[:print:]] อักขระที่พิมพ์ได้ (อักขระที่ไม่ใช่ตัวควบคุม) |
9 | [[:punct:]] อักขระเครื่องหมายวรรคตอน |
10 | [[:space:]] ช่องว่าง |
11 | [[:upper:]] อักษรตัวพิมพ์ใหญ่ [AZ] |
12 | [[:xdigit:]] เลขฐานสิบหก [0-9 AF AF] |
Aampersand อ้างอิง
sed metacharacter &แสดงถึงเนื้อหาของรูปแบบที่ตรงกัน ตัวอย่างเช่นสมมติว่าคุณมีไฟล์ชื่อphone.txt เต็มไปด้วยหมายเลขโทรศัพท์ดังต่อไปนี้ -
5555551212
5555551213
5555551214
6665551215
6665551216
7775551217
คุณต้องการสร้างไฟล์ area code(สามหลักแรก) ล้อมรอบด้วยวงเล็บเพื่อให้อ่านง่ายขึ้น ในการทำเช่นนี้คุณสามารถใช้อักขระแทนที่เครื่องหมายและ -
$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215
(666)5551216
(777)5551217
ที่นี่ในส่วนของรูปแบบคุณจะจับคู่ 3 หลักแรกแล้วใช้ & คุณกำลังแทนที่ 3 หลักเหล่านั้นด้วยรอบ parentheses.
การใช้คำสั่ง sed หลายคำสั่ง
คุณสามารถใช้คำสั่ง sed หลายคำสั่งในคำสั่ง sed เดียวดังนี้ -
$ sed -e 'command1' -e 'command2' ... -e 'commandN' files
ที่นี่ command1 ผ่าน commandNเป็นคำสั่ง sed ของประเภทที่กล่าวถึงก่อนหน้านี้ คำสั่งเหล่านี้ใช้กับแต่ละบรรทัดในรายการไฟล์ที่กำหนดโดยไฟล์
โดยใช้กลไกเดียวกันเราสามารถเขียนตัวอย่างหมายเลขโทรศัพท์ด้านบนได้ดังนี้ -
$ sed -e 's/^[[:digit:]]\{3\}/(&)/g' \
-e 's/)[[:digit:]]\{3\}/&-/g' phone.txt
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217
Note - ในตัวอย่างข้างต้นแทนที่จะใช้คีย์เวิร์ดคลาสอักขระซ้ำ [[:digit:]] สามครั้งเราแทนที่ด้วย \{3\}ซึ่งหมายความว่านิพจน์ทั่วไปก่อนหน้าจะถูกจับคู่สามครั้ง เรายังได้ใช้\ เพื่อให้บรรทัดแตกและสิ่งนี้จะต้องถูกลบออกก่อนที่จะรันคำสั่ง
ย้อนกลับการอ้างอิง
ampersand metacharacterมีประโยชน์ แต่มีประโยชน์มากกว่านั้นคือความสามารถในการกำหนดพื้นที่เฉพาะในนิพจน์ทั่วไป พื้นที่พิเศษเหล่านี้สามารถใช้เป็นข้อมูลอ้างอิงในสตริงการแทนที่ของคุณ ด้วยการกำหนดส่วนเฉพาะของนิพจน์ทั่วไปคุณสามารถอ้างอิงกลับไปยังส่วนเหล่านั้นด้วยอักขระอ้างอิงพิเศษ
ทำ back referencesคุณต้องกำหนดภูมิภาคก่อนจากนั้นอ้างอิงกลับไปที่ภูมิภาคนั้น ในการกำหนดภูมิภาคให้คุณแทรกbackslashed parenthesesในแต่ละภูมิภาคที่น่าสนใจ พื้นที่แรกที่คุณล้อมรอบด้วยแบ็กสแลชจะถูกอ้างอิงโดย\1ภาคที่สองโดย \2และอื่น ๆ
สมมติ phone.txt มีข้อความดังนี้ -
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217
ลองคำสั่งต่อไปนี้ -
$ cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area \
code: \1 Second: \2 Third: \3/'
Area code: (555) Second: 555- Third: 1212
Area code: (555) Second: 555- Third: 1213
Area code: (555) Second: 555- Third: 1214
Area code: (666) Second: 555- Third: 1215
Area code: (666) Second: 555- Third: 1216
Area code: (777) Second: 555- Third: 1217
Note - ในตัวอย่างข้างต้นนิพจน์ทั่วไปแต่ละรายการภายในวงเล็บจะถูกอ้างอิงกลับโดย \1, \2และอื่น ๆ เราได้ใช้\เพื่อให้เส้นแบ่งที่นี่ สิ่งนี้ควรถูกลบออกก่อนที่จะรันคำสั่ง