หนึ่งในคำสั่งที่มีประโยชน์และทรงพลังของ Linux คือคำสั่ง sed คำสั่งนี้ใช้เพื่อทำงานประเภทต่างๆ ใน Linux เช่น แทรก อัปเดต และลบข้อความหรือบรรทัดเฉพาะตามการจับคู่ คุณสามารถแทรกข้อความในสตริงหรือไฟล์ได้หลายวิธีโดยใช้คำสั่ง sed
วิธีแทรกบรรทัดหลังจากค้นหาการจับคู่ในสตริงหรือบรรทัดจะแสดงในบทช่วยสอนนี้
แทรกบรรทัดในสตริง
สามารถแทรกบรรทัดใหม่หลังค่าสตริงใดๆ โดยใช้คำสั่ง sed หากรูปแบบที่กำหนดไว้ในคำสั่งตรงกับส่วนใดๆ ของค่าสตริง
ตัวอย่างต่อไปนี้แสดงให้เห็นว่าสามารถเพิ่มบรรทัดใหม่หลังค่าสตริงได้อย่างไร ถ้ามีสตริงเฉพาะอยู่ที่ใดก็ได้ในค่าสตริง
ตัวอย่างที่ 1: แทรกบรรทัดในสตริงหลังจากค้นหารายการที่ตรงกัน
คำสั่งต่อไปนี้จะค้นหา inng ในสตริง ฉันชอบเขียนโปรแกรม และบรรทัดข้อความ คุณชอบเขียนโปรแกรมไหม จะถูกแทรกหลังสตริงหากมีสตริงการค้นหาอยู่
ในที่นี้ อักขระ & ใช้เพื่อแทรกบรรทัดหลังสตริง
$โยนออก 'ฉันชอบการเขียนโปรแกรม' | sed 's / inng / & คุณชอบเขียนโปรแกรมไหม / 'ผลลัพธ์ต่อไปนี้แสดงว่าไม่มี inng ในสตริงและไม่มีการแทรกบรรทัดหลังสตริง
คำสั่งต่อไปนี้จะค้นหา 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 และแทรกบรรทัดใหม่หลังจากนั้น บรรทัดที่สามของไฟล์ลงท้ายด้วยผง ดังนั้นบรรทัดใหม่จะถูกแทรกหลังจากบรรทัดนั้น
$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 พร้อมรูปแบบ ได้แสดงในบทช่วยสอนนี้ เพื่อช่วยให้ผู้อ่านใช้คำสั่งนี้เพื่อแทรกบรรทัดในรูปแบบชั่วคราวหรือถาวรตามรูปแบบ