เวิร์กสเตชันออนไลน์ของ OnWorks Linux และ Windows

โลโก้

ฟรีโฮสติ้งออนไลน์สำหรับเวิร์กสเตชัน

<ก่อนหน้านี้ | Contents | ถัดไป>

ความกระหายน้ำ

ชื่อ ความกระหายน้ำ สั้นสำหรับ ตัวแก้ไขสตรีม. มันทำการแก้ไขข้อความในกระแสข้อความ ไม่ว่าจะเป็นชุดของไฟล์ที่ระบุหรืออินพุตมาตรฐาน ความกระหายน้ำ เป็นโปรแกรมที่ทรงพลังและค่อนข้างซับซ้อน (มีหนังสือเกี่ยวกับมันทั้งเล่ม) ดังนั้นเราจะไม่กล่าวถึงมันทั้งหมดที่นี่

โดยทั่วไปวิธีการ ความกระหายน้ำ การทำงานคือได้รับคำสั่งแก้ไขเดียว (บนบรรทัดคำสั่ง) หรือชื่อของไฟล์สคริปต์ที่มีคำสั่งหลายคำสั่ง จากนั้นดำเนินการคำสั่งเหล่านี้กับแต่ละบรรทัดในสตรีมข้อความ นี่เป็นตัวอย่างง่ายๆ ของ ความกระหายน้ำ ในการดำเนินการ:


[me@linuxbox ~]$ echo "ด้านหน้า" | s/หน้า/หลัง/'

กลับ

[me@linuxbox ~]$ echo "ด้านหน้า" | s/หน้า/หลัง/'

กลับ


ในตัวอย่างนี้ เราสร้างสตรีมข้อความหนึ่งคำโดยใช้เสียงสะท้อนและไพพ์ลงใน ความกระหายน้ำ. ความกระหายน้ำในที่สุดก็ปฏิบัติตามคำสั่ง ส/หน้า/หลัง/ บนข้อความในสตรีมและสร้างผลลัพธ์ "ย้อนกลับ" เป็นผลลัพธ์ นอกจากนี้เรายังสามารถรับรู้คำสั่งนี้เหมือนกับคำสั่ง "การแทนที่" (ค้นหาและแทนที่) ใน vi.

คำสั่งใน ความกระหายน้ำ ขึ้นต้นด้วยอักษรตัวเดียว ในตัวอย่างข้างต้น คำสั่งการแทนที่จะแสดงด้วยตัวอักษร s และตามด้วยสตริงการค้นหาและแทนที่ คั่นด้วยเครื่องหมายทับเป็นตัวคั่น การเลือกตัวคั่นเป็นแบบพลวัต ตามธรรมเนียมแล้ว อักขระสแลชมักใช้แต่ ความกระหายน้ำ จะยอมรับอักขระใดๆ ที่ตามหลังคำสั่งเป็นตัวคั่นทันที เราสามารถดำเนินการตามคำสั่งเดียวกันนี้:



[me@linuxbox ~]$ echo "ด้านหน้า" | sed 's_front_back_'

กลับ

[me@linuxbox ~]$ echo "ด้านหน้า" | sed 's_front_back_'

กลับ


โดยใช้อักขระขีดล่างทันทีหลังคำสั่ง อักขระนั้นจะกลายเป็นตัวคั่น ความสามารถในการตั้งค่าตัวคั่นสามารถใช้เพื่อทำให้คำสั่งอ่านง่ายขึ้น ดังที่เราจะเห็น

คำสั่งส่วนใหญ่ใน ความกระหายน้ำ อาจนำหน้าด้วย ที่อยู่ซึ่งระบุบรรทัดของอินพุตสตรีมที่จะแก้ไข หากไม่ระบุที่อยู่ คำสั่งแก้ไขคือ car-


ried ออกทุกบรรทัดในสตรีมอินพุต รูปแบบที่อยู่ที่ง่ายที่สุดคือหมายเลขบรรทัด เราสามารถเพิ่มหนึ่งในตัวอย่างของเรา:



[me@linuxbox ~]$ echo "ด้านหน้า" | '1s/หน้า/หลัง/'

กลับ

[me@linuxbox ~]$ echo "ด้านหน้า" | '1s/หน้า/หลัง/'

กลับ


กำลังเพิ่มที่อยู่ 1 คำสั่งของเราจะทำให้การแทนที่ของเราดำเนินการในบรรทัดแรกของสตรีมอินพุตบรรทัดเดียวของเรา หากเราระบุหมายเลขอื่น:



[me@linuxbox ~]$ echo "ด้านหน้า" | '2s/หน้า/หลัง/'

ด้านหน้า

[me@linuxbox ~]$ echo "ด้านหน้า" | '2s/หน้า/หลัง/'

ด้านหน้า


เราเห็นว่าการแก้ไขไม่ได้ดำเนินการ เนื่องจากสตรีมอินพุตของเราไม่มีบรรทัดที่ 2 ที่อยู่อาจแสดงได้หลายวิธี ต่อไปนี้คือสิ่งที่พบบ่อยที่สุด:

ตาราง 20-7: sed Address Notation


คำอธิบายที่อยู่

คำอธิบายที่อยู่

n หมายเลขบรรทัดที่ n เป็นจำนวนเต็มบวก


ภาพ

$ บรรทัดสุดท้าย


ภาพ

/regexp/ เส้นที่ตรงกับนิพจน์ทั่วไปพื้นฐาน POSIX โปรดทราบว่านิพจน์ทั่วไปคั่นด้วยเครื่องหมายทับ ทางเลือก นิพจน์ทั่วไปอาจถูกคั่นด้วยอักขระอื่น โดยการระบุนิพจน์ด้วย \cregexpcที่นี่มี c เป็นตัวละครสำรอง


ภาพ

แอดเดรส1,แอดเดรส2 ช่วงสายจาก แอดเดรส1 ไปยัง แอดเดรส2รวม. ที่อยู่อาจเป็นรูปแบบที่อยู่เดียวข้างต้น


ภาพ

เป็นครั้งแรก~ขั้นตอน จับคู่บรรทัดที่แสดงโดยตัวเลข เป็นครั้งแรกแล้วแต่ละบรรทัดต่อมาที่ ขั้นตอน ช่วงเวลา ตัวอย่างเช่น 1~2 หมายถึงแต่ละบรรทัดที่มีเลขคี่ 5~5 หมายถึงบรรทัดที่ห้าและทุกบรรทัดที่ห้าหลังจากนั้น


ภาพ

แอดเดรส1,+น การจับคู่ แอดเดรส1 และต่อไปนี้ n เส้น


ภาพ

addr! ตรงกันทุกบรรทัด ยกเว้น addrซึ่งอาจจะเป็นรูปแบบใดรูปแบบหนึ่งข้างต้น


ภาพ


เราจะสาธิตที่อยู่ประเภทต่างๆ โดยใช้ distros.txt ไฟล์จากเมื่อก่อน


ในบทนี้. ขั้นแรก ช่วงของหมายเลขบรรทัด:


ภาพ

[me@linuxbox ~]$ sed -n '1,5p' distros.txt

SUSE 10.2 12/07/2006

Fedora 10 11/25/2008

SUSE 11.0 06/19/2008

อูบุนตู 8.04 04/24/2008

Fedora 8 11/08/2007


ในตัวอย่างนี้ เราพิมพ์ช่วงของบรรทัด โดยเริ่มจากบรรทัดที่ 1 และต่อไปยังบรรทัดที่ 5 เมื่อต้องการทำเช่นนี้ เราใช้ p คำสั่งซึ่งทำให้มีการพิมพ์บรรทัดที่ตรงกัน เพื่อให้สิ่งนี้มีประสิทธิภาพ เราต้องรวมตัวเลือก -n (ตัวเลือกไม่มีการพิมพ์อัตโนมัติ) ที่จะทำให้เกิด ความกระหายน้ำ ไม่พิมพ์ทุกบรรทัดตามค่าเริ่มต้น

ต่อไป เราจะลองใช้นิพจน์ทั่วไป:



[me@linuxbox ~]$

sed -n '/SUSE/p' distros.txt

ซูเซ่ 10.2

12/07/2006

ซูเซ่ 11.0

06/19/2008

ซูเซ่ 10.3

10/04/2007

ซูเซ่ 10.1

05/11/2006


โดยการใส่นิพจน์ทั่วไปที่คั่นด้วยเครื่องหมายทับ /ซูส/, เราสามารถแยกบรรทัดที่มีมันในลักษณะเดียวกับ grep.

สุดท้าย เราจะลองปฏิเสธโดยเพิ่มเครื่องหมายอัศเจรีย์ (!) ไปยังที่อยู่:


[me@linuxbox ~]$

sed -n '/SUSE/!p' distros.txt

Fedora 10

11/25/2008

อูบุนตู 8.04

04/24/2008

Fedora 8

11/08/2007

อูบุนตู 6.10

10/26/2006

Fedora 7

05/31/2007

อูบุนตู 7.10

10/18/2007

อูบุนตู 7.04

04/19/2007

Fedora 6

10/24/2006

Fedora 9

05/13/2008

อูบุนตู 6.06

06/01/2006

อูบุนตู 8.10

10/30/2008

Fedora 5

03/20/2006


ที่นี่เราเห็นผลลัพธ์ที่คาดหวัง: ทุกบรรทัดในไฟล์ยกเว้นบรรทัดที่ตรงกับ


การแสดงออกปกติ

จนถึงตอนนี้ เราได้ดูสองรายการของ ความกระหายน้ำ แก้ไขคำสั่ง s และ p. ต่อไปนี้คือรายการคำสั่งแก้ไขพื้นฐานที่สมบูรณ์ยิ่งขึ้น:


ตาราง 20-8: sed Basic Editing Commands


คำอธิบายคำสั่ง

คำอธิบายคำสั่ง

= หมายเลขบรรทัดปัจจุบันของเอาต์พุต


ภาพ

a ต่อท้ายบรรทัดปัจจุบัน


ภาพ

d ลบบรรทัดปัจจุบัน


ภาพ

i แทรกข้อความหน้าบรรทัดปัจจุบัน


ภาพ

p พิมพ์บรรทัดปัจจุบัน โดยค่าเริ่มต้น sed จะพิมพ์ทุกบรรทัดและแก้ไขเฉพาะบรรทัดที่ตรงกับที่อยู่ที่ระบุภายในไฟล์ พฤติกรรมเริ่มต้นสามารถแทนที่ได้โดยการระบุตัวเลือก -n


ภาพ

q ทางออก ความกระหายน้ำ โดยไม่ต้องประมวลผลบรรทัดใด ๆ อีกต่อไป ถ้า

ไม่ได้ระบุตัวเลือก -n ให้ส่งออกบรรทัดปัจจุบัน


ภาพ

Q ทางออก ความกระหายน้ำ โดยไม่ต้องประมวลผลบรรทัดใด ๆ อีกต่อไป


ภาพ

s/regexp/การแทนที่/ แทนที่เนื้อหาของ การแทนที่ ที่ไหนก็ตาม

regexp พบ การแทนที่ อาจรวมถึงอักขระพิเศษ &ซึ่งเทียบเท่ากับข้อความที่จับคู่โดย regexp. นอกจากนี้, การแทนที่ อาจรวมถึงลำดับ \1 ตลอด \9ซึ่งเป็นเนื้อหาของนิพจน์ย่อยที่เกี่ยวข้องใน regexp. สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเรื่องนี้ ดูการสนทนาของ การอ้างอิงกลับ ด้านล่าง. หลังจากเครื่องหมายทับตามหลัง การแทนที่, อาจระบุแฟล็กทางเลือกเพื่อแก้ไข s พฤติกรรมของคำสั่ง


ภาพ

y/set1/set2 ทำการทับศัพท์โดยแปลงอักขระจาก set1 กับอักขระที่สอดคล้องกันใน set2. โปรดทราบว่าไม่เหมือน tr, ความกระหายน้ำ กำหนดให้ทั้งสองชุดมีความยาวเท่ากัน


ภาพ


การขอ s คำสั่งเป็นคำสั่งแก้ไขที่ใช้บ่อยที่สุด เราจะสาธิตพลังเพียงบางส่วนโดยดำเนินการแก้ไขบน .ของเรา distros.txt ไฟล์. เราคุยกันก่อนว่าช่องวันที่ใน distros.txt ไม่ได้อยู่ใน "คอมพิวเตอร์ที่เป็นมิตร" สำหรับ-


เสื่อ. แม้ว่าวันที่จะมีรูปแบบเป็น MM/DD/YYYY มันจะดีกว่า (เพื่อความสะดวกในการจัดเรียง) หากรูปแบบเป็น YYYY-MM-DD ในการดำเนินการเปลี่ยนแปลงนี้กับไฟล์ด้วยมือจะใช้เวลานานและเกิดข้อผิดพลาดได้ง่าย แต่ด้วย ความกระหายน้ำการเปลี่ยนแปลงนี้สามารถทำได้ในขั้นตอนเดียว:


ภาพ

[me@linuxbox ~]$ sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\

)$/\3-\1-\2/' distros.txt

ซูส 10.2 2006-12-07

เฟโดรา 10 2008-11-25

ซูส 11.0 2008-06-19

อูบุนตู 8.04 2008-04-24

เฟโดรา 8 2007-11-08

ซูส 10.3 2007-10-04

อูบุนตู 6.10 2006-10-26

เฟโดรา 7 2007-05-31

อูบุนตู 7.10 2007-10-18

อูบุนตู 7.04 2007-04-19

ซูส 10.1 2006-05-11

เฟโดรา 6 2006-10-24

เฟโดรา 9 2008-05-13

อูบุนตู 6.06 2006-06-01

อูบุนตู 8.10 2008-10-30

เฟโดรา 5 2006-03-20

ว้าว! ตอนนี้เป็นคำสั่งที่ดูน่าเกลียด แต่มันได้ผล ในขั้นตอนเดียว เราได้เปลี่ยนรูปแบบวันที่ในไฟล์ของเรา นอกจากนี้ยังเป็นตัวอย่างที่สมบูรณ์แบบที่อธิบายว่าเหตุใดนิพจน์ทั่วไปจึงถูกเรียกติดตลกว่าเป็นสื่อ "เขียนอย่างเดียว" ในบางครั้ง เราสามารถเขียนได้ แต่บางครั้งเราไม่สามารถอ่านได้ ก่อนที่เราจะวิ่งหนีด้วยความหวาดกลัวจากคำสั่งนี้ เรามาดูกันว่ามันถูกสร้างขึ้นมาอย่างไร อันดับแรก เรารู้ว่าคำสั่งจะมีโครงสร้างพื้นฐานนี้:



sed ของ /regexp/การแทนที่/' distros.txt

sed ของ /regexp/การแทนที่/' distros.txt


ขั้นตอนต่อไปของเราคือการหานิพจน์ทั่วไปที่จะแยกวันที่ เนื่องจากอยู่ในรูปแบบ MM/DD/YYYY และปรากฏที่ท้ายบรรทัด เราจึงสามารถใช้นิพจน์ดังนี้:



[0-9]{2}/[0-9]{2}/[0-9]{4}$

[0-9]{2}/[0-9]{2}/[0-9]{4}$


ซึ่งตรงกับตัวเลขสองหลัก เครื่องหมายทับ สองหลัก เครื่องหมายทับ สี่หลัก และท้ายบรรทัด ที่จะดูแล regexpแต่สิ่งที่เกี่ยวกับ การแทนที่? เราต้องมาแนะนำ


คุณลักษณะนิพจน์ทั่วไปใหม่ที่ปรากฏในบางแอปพลิเคชันที่ใช้ BRE คุณลักษณะนี้เรียกว่า การอ้างอิงกลับ และทำงานดังนี้: ถ้าลำดับ \n ปรากฏใน ตำแหน่งใหม่ ที่ไหน n เป็นตัวเลขตั้งแต่ 1 ถึง 9 ลำดับจะอ้างถึงนิพจน์ย่อยที่สอดคล้องกันในนิพจน์ทั่วไปก่อนหน้า ในการสร้างนิพจน์ย่อย เราเพียงแค่ใส่ไว้ในวงเล็บดังนี้:



([0-9]{2})/([0-9]{2})/([0-9]{4})$

([0-9]{2})/([0-9]{2})/([0-9]{4})$


ตอนนี้เรามีนิพจน์ย่อยสามนิพจน์ อันแรกประกอบด้วยเดือน อันที่สองประกอบด้วยวันของเดือน และอันที่สามประกอบด้วยปี ตอนนี้เราสามารถสร้างได้ การแทนที่ ดังต่อไปนี้:



\3-\1-\2

\3-\1-\2


ซึ่งให้ปี ขีดกลาง เดือน ขีดกลาง และวันแก่เรา ตอนนี้คำสั่งของเรามีลักษณะดังนี้:


sed 's/([0-9]{2})/([0-9]{2})/([0-9]{4})$/\3-\1-\2/' distros.txt

sed 's/([0-9]{2})/([0-9]{2})/([0-9]{4})$/\3-\1-\2/' distros.txt


เรามีสองปัญหาที่เหลืออยู่ อย่างแรกคือเครื่องหมายทับพิเศษในนิพจน์ปกติของเราจะสับสน ความกระหายน้ำ เมื่อมันพยายามตีความ s สั่งการ. ประการที่สองคือตั้งแต่ ความกระหายน้ำโดยค่าเริ่มต้น ยอมรับเฉพาะนิพจน์ทั่วไปพื้นฐาน อักขระหลายตัวในนิพจน์ทั่วไปของเราจะถูกใช้เป็นตัวอักษร แทนที่จะเป็นอักขระเมตา เราสามารถแก้ปัญหาทั้งสองนี้ได้โดยใช้แบ็กสแลชแบบเสรีนิยมเพื่อหลีกหนีจากอักขระที่ละเมิด:



sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/' dis tros.txt

sed 's/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/' dis tros.txt


และคุณมีมัน!

คุณสมบัติอีกประการหนึ่งของไฟล์ s คำสั่งคือการใช้แฟล็กทางเลือกที่อาจตามหลังสตริงการจัดตำแหน่ง ที่สำคัญที่สุดคือ g ธงซึ่งสั่ง ความกระหายน้ำ เพื่อใช้การค้นหาและแทนที่ทั่วโลกกับบรรทัด ไม่ใช่แค่กับอินสแตนซ์แรก ซึ่งเป็นค่าเริ่มต้น นี่คือตัวอย่าง:


[me@linuxbox ~]$ echo "aaabbbccc" | sed 's/b/B/'

อ่าาาBbbccc

[me@linuxbox ~]$ echo "aaabbbccc" | sed 's/b/B/'

อ่าาาBbbccc


เราเห็นว่ามีการแทนที่ แต่สำหรับตัวอย่างแรกของตัวอักษร "b" ในขณะที่ส่วนที่เหลือจะไม่เปลี่ยนแปลง โดยการเพิ่ม g ธง เราสามารถเปลี่ยนอินสแตนซ์ทั้งหมดได้:



[me@linuxbox ~]$ echo "aaabbbccc" | sed 's/b/B/g'

อ๊ากกก

[me@linuxbox ~]$ echo "aaabbbccc" | sed 's/b/B/g'

อ๊ากกก


จนถึงตอนนี้เรามีแต่ให้ ความกระหายน้ำ คำสั่งเดียวผ่านบรรทัดคำสั่ง นอกจากนี้ยังเป็นไปได้ที่จะสร้างคำสั่งที่ซับซ้อนมากขึ้นในไฟล์สคริปต์โดยใช้ -f ตัวเลือก. เพื่อสาธิต เราจะใช้ ความกระหายน้ำ กับเรา distros.txt ไฟล์เพื่อสร้างรายงาน รายงานของเราจะแสดงชื่อเรื่องที่ด้านบน วันที่แก้ไข และชื่อการแจกจ่ายทั้งหมดที่แปลงเป็นตัวพิมพ์ใหญ่ ในการดำเนินการนี้ เราจะต้องเขียนสคริปต์ ดังนั้นเราจะเปิดโปรแกรมแก้ไขข้อความของเราและป้อนข้อมูลต่อไปนี้:



# sed script เพื่อสร้างรายงานการแจกแจงลินุกซ์


1 ผม\

\

รายงานการกระจาย Linux\


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

# sed script เพื่อสร้างรายงานการแจกแจงลินุกซ์


1 ผม\

\

รายงานการกระจาย Linux\


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/


พวกเราจะรอด ความกระหายน้ำ สคริปต์เป็น distros.sed และเรียกใช้ดังนี้:


ภาพ

[me@linuxbox ~]$ sed -f distros.sed distros.txt


รายงานการกระจาย Linux


SUSE

10.2

2006-12-07

เฟโดรา

10

2008-11-25

SUSE

11.0

2008-06-19

UBUNTU

8.04

2008-04-24

เฟโดรา

8

2007-11-08

SUSE

10.3

2007-10-04

UBUNTU

6.10

2006-10-26

เฟโดรา

7

2007-05-31

UBUNTU

7.10

2007-10-18


UBUNTU

7.04

2007-04-19

SUSE

10.1

2006-05-11

เฟโดรา

6

2006-10-24

เฟโดรา

9

2008-05-13

UBUNTU

6.06

2006-06-01

UBUNTU

8.10

2008-10-30

เฟโดรา

5

2006-03-20


# sed script เพื่อสร้างรายงานการแจกแจงลินุกซ์

# sed script เพื่อสร้างรายงานการแจกแจงลินุกซ์

อย่างที่เราเห็น สคริปต์ของเราให้ผลลัพธ์ที่ต้องการ แต่มันทำได้อย่างไร? มาดูสคริปต์ของเรากันอีกครั้ง เราจะใช้ แมว เพื่อกำหนดหมายเลขบรรทัด:



[me@linuxbox ~]$ cat -n distros.sed

[me@linuxbox ~]$ cat -n distros.sed


1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8


ภาพ

1 ผม\

\

รายงานการกระจาย Linux\


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

1 ผม\

\

รายงานการกระจาย Linux\


s/\([0-9]\{2\}\)\/\([0-9]\{2\}\)\/\([0-9]\{4\}\)$/\3-\1-\2/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/

บรรทัดหนึ่งของสคริปต์ของเราคือ a ความเห็น. เช่นเดียวกับไฟล์คอนฟิกูเรชันและภาษาการเขียนโปรแกรมบนระบบ Linux ความคิดเห็นเริ่มต้นด้วย # และตามด้วยข้อความที่มนุษย์สามารถอ่านได้ ความคิดเห็นสามารถวางไว้ที่ใดก็ได้ในสคริปต์ (แต่ไม่อยู่ในคำสั่งเอง) และเป็นประโยชน์กับมนุษย์ที่อาจจำเป็นต้องระบุและ/หรือบำรุงรักษาสคริปต์

บรรทัดที่ 2 เป็นบรรทัดว่าง เช่นเดียวกับความคิดเห็น อาจมีการเพิ่มบรรทัดว่างเพื่อให้อ่านง่ายขึ้น

หลาย ความกระหายน้ำ คำสั่งสนับสนุนที่อยู่บรรทัด สิ่งเหล่านี้ใช้เพื่อระบุว่าจะต้องดำเนินการกับบรรทัดใด ที่อยู่บรรทัดอาจแสดงเป็นหมายเลขบรรทัดเดียว ช่วงหมายเลขบรรทัด และหมายเลขบรรทัดพิเศษ “$” ซึ่งระบุบรรทัดสุดท้ายของอินพุต

บรรทัดที่ 3 ถึง 6 มีข้อความที่จะแทรกตามที่อยู่ 1 ซึ่งเป็นบรรทัดแรกของการป้อนข้อมูล NS i คำสั่งตามด้วยลำดับ backslash-carriage return เพื่อสร้าง carriage return หรือสิ่งที่เรียกว่า อักขระต่อเนื่องของบรรทัด. ลำดับนี้ ซึ่งสามารถใช้ได้ในหลายสถานการณ์รวมถึงเชลล์สคริปต์ อนุญาตให้มีการส่งคืนการขึ้นบรรทัดใหม่ในสตรีมข้อความโดยไม่ต้องส่งสัญญาณล่าม (ในกรณีนี้ ความกระหายน้ำ) ว่าถึงจุดสิ้นสุดของบรรทัดแล้ว NS iและในทำนองเดียวกัน a (ซึ่งต่อท้ายข้อความแทนที่จะแทรก) และ c (ซึ่งแทนที่ข้อความ) คำสั่ง อนุญาตข้อความหลายบรรทัดตราบใดที่แต่ละบรรทัด ยกเว้นบรรทัดสุดท้าย ลงท้ายด้วยอักขระต่อเนื่องของบรรทัด บรรทัดที่หกของสคริปต์ของเราจริง ๆ แล้วคือจุดสิ้นสุดของข้อความที่แทรกของเราและลงท้ายด้วยการขึ้นบรรทัดใหม่แบบธรรมดาแทนที่จะเป็นอักขระต่อเนื่องของบรรทัดซึ่งเป็นสัญญาณของการสิ้นสุดของ i คำสั่ง


ภาพ

หมายเหตุ: อักขระต่อเนื่องของบรรทัดประกอบด้วยแบ็กสแลชที่ตามมา ทันที

โดยการคืนรถ ไม่อนุญาตให้มีช่องว่างตัวกลาง


ภาพ

บรรทัดที่ 7 คือคำสั่งค้นหาและแทนที่ของเรา เนื่องจากไม่มีที่อยู่นำหน้า แต่ละบรรทัดในสตรีมอินพุตจึงขึ้นอยู่กับการดำเนินการ

ภาพ

บรรทัดที่ 8 ทำการทับศัพท์ของตัวพิมพ์เล็กเป็นตัวพิมพ์ใหญ่ สังเกตว่าไม่เหมือน trที่ y คำสั่งใน ความกระหายน้ำ ไม่รองรับช่วงอักขระ (เช่น [a-z]) และไม่รองรับคลาสอักขระ POSIX อีกครั้งตั้งแต่ y คำสั่งไม่ได้นำหน้าด้วยที่อยู่ แต่จะใช้กับทุกบรรทัดในสตรีมอินพุต


คนชอบเซดก็ไลค์...

sed เป็นโปรแกรมที่มีความสามารถมาก สามารถทำงานแก้ไขที่ค่อนข้างซับซ้อนให้กับสตรีมข้อความได้ มักใช้สำหรับงานง่ายๆ ในบรรทัดเดียว แทนที่จะเป็นสคริปต์แบบยาว ผู้ใช้หลายคนชอบเครื่องมืออื่นๆ สำหรับงานที่ใหญ่กว่า ที่นิยมมากที่สุดคือ awk และ Perl สิ่งเหล่านี้เป็นมากกว่าเครื่องมืออย่างโปรแกรมที่ครอบคลุมที่นี่ และขยายไปสู่ขอบเขตของภาษาการเขียนโปรแกรมที่สมบูรณ์ โดยเฉพาะอย่างยิ่ง Perl มักใช้แทนเชลล์สคริปต์สำหรับงานด้านการจัดการและดูแลระบบจำนวนมาก รวมทั้งเป็นสื่อกลางที่ได้รับความนิยมอย่างมากสำหรับการพัฒนาเว็บ awk เชี่ยวชาญกว่าเล็กน้อย จุดแข็งเฉพาะคือความสามารถในการจัดการข้อมูลแบบตาราง มันคล้ายกับ sed ในโปรแกรม awk ที่ปกติแล้วจะประมวลผลไฟล์ข้อความทีละบรรทัด โดยใช้โครงร่างที่คล้ายกับแนวคิด sed ของที่อยู่ตามด้วยการกระทำ แม้ว่า awk และ Perl จะอยู่นอกขอบเขตของหนังสือเล่มนี้ แต่ก็เป็นทักษะที่ดีมากสำหรับผู้ใช้บรรทัดคำสั่ง Linux ในการเรียนรู้


ระบบปฏิบัติการคลาวด์คอมพิวติ้งยอดนิยมที่ OnWorks: