วิธีแทรกบรรทัดหลังการแข่งขันโดยใช้ `sed'

How Insert Line After Match Using Sed



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

วิธีแทรกบรรทัดหลังจากค้นหาการจับคู่ในสตริงหรือบรรทัดจะแสดงในบทช่วยสอนนี้







แทรกบรรทัดในสตริง

สามารถแทรกบรรทัดใหม่หลังค่าสตริงใดๆ โดยใช้คำสั่ง sed หากรูปแบบที่กำหนดไว้ในคำสั่งตรงกับส่วนใดๆ ของค่าสตริง



ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถเพิ่มบรรทัดใหม่หลังค่าสตริงได้อย่างไร ถ้ามีสตริงเฉพาะอยู่ที่ใดก็ได้ในค่าสตริง



ตัวอย่างที่ 1: แทรกบรรทัดในสตริงหลังจากค้นหารายการที่ตรงกัน

คำสั่งต่อไปนี้จะค้นหา inng ในสตริง ฉันชอบเขียนโปรแกรม และบรรทัดข้อความ คุณชอบเขียนโปรแกรมไหม จะถูกแทรกหลังสตริงหากมีสตริงการค้นหาอยู่





ในที่นี้ อักขระ & ใช้เพื่อแทรกบรรทัดหลังสตริง

$โยนออก 'ฉันชอบการเขียนโปรแกรม' | sed 's / inng / & คุณชอบเขียนโปรแกรมไหม / '

ผลลัพธ์ต่อไปนี้แสดงว่าไม่มี inng ในสตริงและไม่มีการแทรกบรรทัดหลังสตริง




คำสั่งต่อไปนี้จะค้นหา ing ในสตริงฉันชอบการเขียนโปรแกรมและมีอยู่ในสตริง

$โยนออก 'ฉันชอบการเขียนโปรแกรม' | sed 's/ing./& คุณชอบเขียนโปรแกรมไหม?/'

ผลลัพธ์ต่อไปนี้แสดงว่ามีการเพิ่มบรรทัดใหม่หลังสตริง

แทรกบรรทัดในไฟล์

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

A. การใช้ a ในคำสั่ง sed

สามารถใช้ a ในรูปแบบการค้นหาของ sed เพื่อต่อท้ายบรรทัดในไฟล์หนึ่งหรือหลายบรรทัดต่อท้ายบรรทัดที่รูปแบบการค้นหาตรงกันหรือหลังหมายเลขบรรทัดเฉพาะ

B. การใช้ i ในคำสั่ง sed

สามารถใช้ i ในรูปแบบการค้นหาของคำสั่ง sed เพื่อแทรกหนึ่งบรรทัดขึ้นไปในไฟล์ก่อนบรรทัดที่รูปแบบการค้นหาตรงกัน

แทรกบรรทัดในไฟล์ตามรูปแบบ:

สร้างไฟล์ข้อความที่คั่นด้วยแท็บชื่อ products.txt ด้วยเนื้อหาต่อไปนี้เพื่อแสดงการใช้แฟล็กด้านบนในคำสั่ง sed

products.txt

ชื่อไอดี

01 วิปครีม

02 ผงโกโก้

03 น้ำตาล

04 ไข่

05 แป้ง

ตัวอย่างที่ 2: แทรกบรรทัดหลังหมายเลขบรรทัดเฉพาะโดยใช้a

คำสั่งต่อไปนี้แสดงวิธีการเพิ่มบรรทัดใหม่ หลังจากหมายเลขบรรทัดเฉพาะของไฟล์ products.txt ตามรูปแบบที่ใช้ในคำสั่ง sed

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

$แมวproducts.txt

$sed '2 a b01 ผงฟู'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่งด้านบน

ตัวอย่าง-3: แทรกบรรทัดหลังบรรทัดสุดท้ายโดยใช้a

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

$แมวproducts.txt

$sed '$ a b01 ผงฟู'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่งด้านบน

ตัวอย่างที่ 4: แทรกบรรทัดที่ใดก็ได้ในไฟล์หลังจากจับคู่รูปแบบโดยใช้a

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

$แมวproducts.txt

$sed '/^s01.*/a b01 ผงฟู'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่ง


คำสั่ง sed ต่อไปนี้จะค้นหาบรรทัดใดๆ ที่ลงท้ายด้วย Powder และแทรกบรรทัดใหม่หลังจากนั้น บรรทัดที่สามของไฟล์ลงท้ายด้วยผง ดังนั้นบรรทัดใหม่จะถูกแทรกหลังจากบรรทัดนั้น

$แมวproducts.txt

$sed '/Powder$/a b01 Baking Powder'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่งข้างต้น

ตัวอย่างที่-5: แทรกหลายบรรทัดหลังรูปแบบการจับคู่โดยใช้a

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

ที่นี่จะเพิ่มสองบรรทัดหลังจากบรรทัดที่สามตามรูปแบบ

$แมวproducts.txt

$sed '/^[a-c]/a b01 ผงฟู b02 เบคกิ้งโซดา'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่งข้างต้น

ตัวอย่างที่ 6: แทรกเส้นหลังจากจับคู่รูปแบบโดยใช้ I

$แมวproducts.txt

$sed '/cream/i b01 ผงฟู'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่งข้างต้น

ตัวอย่าง-7: แทรกบรรทัดอย่างถาวรหลังจากรูปแบบที่ตรงกันโดยใช้ตัวเลือก -i

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

$แมวproducts.txt

$sed -ผม '/e$/a g01 Ghee'products.txt

$แมวproducts.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่งข้างต้น

บทสรุป:

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