ตัวอย่าง 10 Sed เหล่านี้จะทำให้คุณเป็นผู้ใช้ Linux Power

ตัวอย่าง 10 Sed เหล่านี้จะทำให้คุณเป็นผู้ใช้ Linux Power

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





ในบทความนี้ เราจะพูดถึงคำสั่ง sed โดยละเอียด พร้อมกับตัวอย่างสำคัญที่แสดงให้เห็นถึงพลังของยูทิลิตี้ sed ใน Linux





คำสั่ง sed คืออะไร?

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





การดำเนินการพื้นฐานสามประการที่สนับสนุนโดยคำสั่ง sed คือ:

  1. การแทรก
  2. การลบ
  3. การทดแทน (ค้นหาและแทนที่)

ผู้ใช้ขั้นสูงยังสามารถใช้นิพจน์ทั่วไปด้วยคำสั่ง sed เพื่อแก้ไขสตรีมข้อความได้อย่างมีประสิทธิภาพมากขึ้น



ไวยากรณ์พื้นฐานของคำสั่งคือ:

sed [options] [pattern] [filepath]

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





ซอฟต์แวร์เสียงพูดเป็นข้อความดาวน์โหลดฟรีสำหรับ windows 10

10 ตัวอย่างของ Linux sed Command

หากคุณวางแผนที่จะเป็นผู้ใช้ Linux ทั่วไป การรู้วิธีแก้ไขไฟล์ ค้นหาและแทนที่คำเฉพาะ และกรองเอาต์พุตของเทอร์มินัลอาจเป็นประโยชน์สำหรับคุณ ส่วนนี้ครอบคลุมตัวอย่างบางส่วนของคำสั่ง sed ที่จะเปลี่ยนคุณเป็นผู้ใช้ Linux

เราจะใช้ไฟล์ข้อความต่อไปนี้เพื่อสาธิตในโพสต์





This is a demo text file.
It is an amazing file that will help us all.
The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

1. ดูช่วงของเส้น

คำสั่ง Linux เช่น head และ tail เอาต์พุตไฟล์ข้อความแรกหรือสิบบรรทัดสุดท้าย แต่ถ้าคุณต้องการรับเนื้อหาระหว่างสองบรรทัดที่ระบุในไฟล์ล่ะ ในสถานการณ์เช่นนี้ คำสั่ง sed อาจมีประโยชน์

เพื่อส่งออกเนื้อหาระหว่างบรรทัดที่ 3 และ 5 ของไฟล์ textfile.txt :

sed -n '3,5p' textfile.txt

NS -NS แฟล็กป้องกันไม่ให้ sed แสดงพื้นที่รูปแบบเมื่อสิ้นสุดแต่ละรอบ คุณยังสามารถใช้ --เงียบ และ --เงียบ ตัวเลือกแทน -NS . NS NS อาร์กิวเมนต์ย่อมาจาก พิมพ์ และใช้เพื่อแสดงบรรทัดที่ตรงกับผู้ใช้

การดำเนินการคำสั่งดังกล่าวในไฟล์ตัวอย่างจะสร้างผลลัพธ์ต่อไปนี้

The sed command is also great for stream editing.
Want to learn how to use the command?
This is another line in the file.

หากต้องการส่งออกเนื้อหาไฟล์ทั้งหมดยกเว้นช่วงที่ระบุ ให้ใช้ปุ่ม NS ธงแทน NS ในคำสั่ง:

sed '3,5d' textfile.txt

NS NS แฟล็กจะลบสตริงที่ตรงกันออกจากเอาต์พุตและแสดงเนื้อหาที่เหลือ

This is a demo text file.
It is an amazing file that will help us all.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

2. แสดงเส้นที่ไม่ต่อเนื่องกัน

ในการพิมพ์บรรทัดที่ไม่ต่อเนื่องกันระหว่างหลายช่วงในไฟล์:

sed -n -e '1,2p' -e '5,6p' textfile.txt

เอาท์พุท:

This is a demo text file.
It is an amazing file that will help us all.
This is another line in the file.
This is the third general line in the file.

NS -และ ธงช่วยใน กำลังดำเนินการ การกระทำหลายอย่างโดยใช้คำสั่งเดียว

3. แทรกช่องว่างระหว่างบรรทัด

หากคุณต้องการแทรกบรรทัดว่างระหว่างแต่ละบรรทัดในไฟล์ข้อความด้วยเหตุผลใดก็ตาม ให้ใช้เครื่องหมาย NS อาร์กิวเมนต์ด้วยคำสั่ง sed เริ่มต้น

หน้าจอกระพริบ windows 10 ทำอะไรไม่ได้
sed G textfile.txt

หากต้องการแทรกบรรทัดว่างหลายบรรทัดในผลลัพธ์ ให้ส่งหลายบรรทัด NS อาร์กิวเมนต์คั่นด้วย อัฒภาค ( ; ) อักขระ.

sed 'G;G' textfile.txt

4. แทนที่ Word ในไฟล์ข้อความ

หากคุณต้องการแทนที่คำบางคำแต่ละคำด้วยคำอื่น ให้ใช้ NS และ NS อาร์กิวเมนต์ด้วยคำสั่ง ไวยากรณ์พื้นฐานสำหรับการแทนที่คำโดยใช้คำสั่ง sed คือ:

sed s/originalword/replaceword/g filename

คุณสามารถใช้ไวยากรณ์ดังกล่าวแทนคำว่า . ได้ อัศจรรย์ กับ สุดยอด ในไฟล์ textfile.txt :

sed s/amazing/super/g textfile.txt

NS NS อาร์กิวเมนต์หมายถึง การแทน และ NS คำสั่งใช้เพื่อแทนที่เนื้อหาที่ตรงกันด้วยเนื้อหาทดแทนที่ระบุ

หากต้องการแทนที่คำที่สองด้วย sed ให้ส่งตัวเลขไปที่ NS การโต้แย้ง. ในกรณีนี้:

sed s/amazing/super/g2 textfile.txt

หากคุณต้องการละเว้นตัวพิมพ์เล็กและใหญ่ขณะแทนที่คำ ให้ใช้ ให้ แทน NS , ที่ไหน ผม หมายถึง ไม่สนใจ กรณี.

sed s/Amazing/super/gi textfile.txt

ที่เกี่ยวข้อง: ใช้ Vi? นี่คือวิธีเปิดไฟล์ จากนั้นบันทึกและออก

5. แทนที่คำภายในช่วง

คุณยังสามารถแทนที่คำในช่วงที่กำหนดได้

sed '2,5s/amazing/super/g' textfile.txt

6. ทำการเปลี่ยนตัวหลายครั้งพร้อมกัน

หากคุณต้องการทำการแทนที่ตั้งแต่สองตัวขึ้นไปในครั้งเดียว ให้แยกคำสั่งด้วย อัฒภาค ( ; ) อักขระ.

sed 's/amazing/super/g;s/command/utility/gi' textfile.txt

ระบบจะแสดงผลดังต่อไปนี้

This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is a orange.

7. แทนที่คำเฉพาะเมื่อพบการจับคู่

คุณยังสามารถใช้คำสั่ง sed เพื่อแทนที่คำได้ก็ต่อเมื่อพบคำที่ตรงกันในบรรทัดเท่านั้น ตัวอย่างเช่น การแทนที่คำว่า ถึง กับ NS ถ้าคำว่า ส้ม มีอยู่ในบรรทัด:

sed -e '/orange/ s/a/an/g' textfile.txt

การออกคำสั่งดังกล่าวจะแสดงผล:

This is a demo text file.
It is an super file that will help us all.
The sed utility is also great for stream editing.
Want to learn how to use the utility?
This is another line in the file.
This is the third general line in the file.
This file is named as textfile.
This is a apple.
This is an orange.

สังเกตว่าคำว่า ถึง ในสาย นี่คือแอปเปิ้ล ไม่ได้ถูกแทนที่เนื่องจากระบบไม่พบคำว่า ส้ม ในนั้น.

8. แทนที่คำโดยใช้นิพจน์ทั่วไป

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

เพื่อแทนที่การเกิดขึ้นทั้งหมดของคำว่า อัศจรรย์ หรือ อัศจรรย์ กับ สุดยอด :

sed -e 's/[Aa]mazing/super/g' textfile.txt

ในทำนองเดียวกัน คุณยังสามารถใช้นิพจน์ทั่วไปขั้นสูงเพื่อดำเนินการเฉพาะโดยใช้คำสั่ง sed

9. ไปป์ด้วยคำสั่งอื่น

คุณสามารถโยง sed กับคำสั่ง Linux อื่น ๆ ได้เช่นกัน ตัวอย่างเช่น คุณสามารถไปป์ lspci คำสั่งด้วย sed เพื่อเพิ่มช่องว่างระหว่างบรรทัดในเอาต์พุต

lspci | sed G

เพื่อแทนที่คำเฉพาะในผลลัพธ์ของ ip แสดงเส้นทาง สั่งการ:

ip route show | sed s/src/source/g

คำสั่งดังกล่าวใช้แทนคำว่า แหล่งที่มา แทนคำเดิม src .

ที่เกี่ยวข้อง: วิธีใช้คำสั่ง Find เพื่อค้นหาไฟล์ใน Linux

10. แก้ไขและสำรองไฟล์ต้นฉบับ

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

หากต้องการสำรองไฟล์ต้นฉบับโดยใช้ sed ให้ใช้ปุ่ม -ผม ตั้งค่าสถานะในคำสั่ง

คุณต้องการเมนบอร์ดใหม่สำหรับซีพียูใหม่หรือไม่?
sed -i'.backup' 's/amazing/super/g' textfile.txt

ไฟล์ใหม่จะถูกสร้างขึ้นด้วยชื่อ textfile.txt.backup . คุณสามารถตรวจสอบว่าทั้งสองไฟล์ต่างกันโดยใช้ปุ่ม แตกต่าง สั่งการ.

diff textfile.txt textfile.txt.backup

การแก้ไขสตริงใน Linux ด้วย sed

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

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

แบ่งปัน แบ่งปัน ทวีต อีเมล 7 วิธีในการรับความช่วยเหลือเกี่ยวกับ Command Line บน Linux

คำสั่งที่จำเป็นทั้งหมดสำหรับการเรียนรู้เกี่ยวกับคำสั่ง Linux จาก command-line

อ่านต่อไป
หัวข้อที่เกี่ยวข้อง
  • ลินุกซ์
  • โปรแกรมแก้ไขข้อความ
  • เทอร์มินัล
  • พร้อมรับคำสั่ง
เกี่ยวกับผู้เขียน Deepesh Sharma(79 บทความที่ตีพิมพ์)

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

เพิ่มเติมจาก Deepesh Sharma

สมัครรับจดหมายข่าวของเรา

เข้าร่วมจดหมายข่าวของเราสำหรับเคล็ดลับทางเทคนิค บทวิจารณ์ eBook ฟรี และดีลพิเศษ!

คลิกที่นี่เพื่อสมัครสมาชิก