วิธีแทนที่หลายบรรทัดโดยใช้คำสั่ง `sed`

How Replace Multiple Lines Using Sed Command



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

แผ่นโกง `sed' ที่ใช้กันทั่วไป:

อักขระที่ใช้บ่อยที่สุดที่ใช้ในคำสั่ง `sed' ได้อธิบายไว้ในตารางต่อไปนี้







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

แทนที่หลายบรรทัดโดยใช้คำสั่ง `sed` จากเทอร์มินัล:

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



sed.txt



sed แบบเต็มคือตัวแก้ไขสตรีม





เป็นยูทิลิตี้ Unix ที่ใช้ในการอ่านและแปลงข้อความในรูปแบบอื่น

ได้รับการพัฒนาโดย Lee E. McMahon



ใช้สำหรับการประมวลผลข้อความ

รองรับนิพจน์ทั่วไป

ตัวอย่างที่ 1: แทนที่สองบรรทัดติดต่อกัน

คำสั่ง `sed` ต่อไปนี้จะแทนที่สองบรรทัดที่ต่อเนื่องกันด้วยอีกบรรทัดหนึ่ง ในที่นี้ อ็อพชัน -z ใช้เพื่อแทนที่บรรทัดที่ต่อเนื่องกันด้วยข้อมูล null ก่อนเพิ่มข้อความแทนที่ ตามคำสั่ง 3rdและ 4NSบรรทัดของไฟล์จะถูกแทนที่ด้วยข้อความ 'เป็นเครื่องมือที่มีประโยชน์มาก' .

$แมวsed.txt
$sed -กับ 's/It ถูกพัฒนาโดย Lee E. McMahon ใช้สำหรับ text
กำลังประมวลผล/มันเป็นเครื่องมือที่มีประโยชน์มาก/'
sed.txt

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

ตัวอย่างที่ 2: แทนที่หลายบรรทัดตามการจับคู่และแฟล็กทั่วโลก

คำสั่ง `sed` ต่อไปนี้จะแทนที่บรรทัดทั้งหมดที่ขึ้นต้นด้วยคำว่า 'มัน' โดยคำว่า ' บรรทัดนี้ถูกแทนที่ '.

$แมวsed.txt
$sed 's/^It.*/บรรทัดนี้ถูกแทนที่/g'sed.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่ง สามบรรทัดมีคำว่า ' มัน 'ในไฟล์. ดังนั้น บรรทัดเหล่านี้จึงถูกแทนที่ด้วยข้อความแทนที่

ตัวอย่างที่ 3: แทนที่หลายบรรทัดตามคำสั่งที่ตรงกันและบรรทัดถัดไป

คำสั่ง `sed` ต่อไปนี้จะแทนที่คำว่า ' เป็น 'โดยคำว่า' เคยเป็น ' ด้วยคำสั่งบรรทัดถัดไป 'n'

$แมวsed.txt
$sed ' {n;/is/ {s/is/was/}}'sed.txt

ผลลัพธ์ต่อไปนี้จะปรากฏขึ้นหลังจากรันคำสั่ง ที่นี่, 'เป็น' มีอยู่ใน2NSและ 4NSบรรทัดของไฟล์และบรรทัดเหล่านี้ได้รับการแก้ไขโดย word 'เคยเป็น' .

แทนที่หลายบรรทัดด้วยการสร้างไฟล์สคริปต์ `sed`:

ในตัวอย่างก่อนหน้านี้ คำสั่ง `sed ' ได้รับการดำเนินการจากเทอร์มินัลแล้ว แต่มันเป็นภาษาสคริปต์ และหากสคริปต์มีหลายคำสั่ง จะเป็นการดีกว่าที่จะสร้างไฟล์ sed ด้วยสคริปต์ สร้างไฟล์ข้อความชื่อ นักเรียน.txt ด้วยเนื้อหาต่อไปนี้ซึ่งจะใช้สคริปต์ 'sed'

นักเรียน.txt

ID: 111045
ชื่อ: Robert
แผนก: CSE
แบทช์: 35

ID: 111876
ชื่อ: โจเซฟ
แผนก: BBA
แบทช์: 27

ID: 111346
ชื่อ : วิลเลียม
แผนก: CSE
แบทช์: 45

ID: 111654
ชื่อ: Charles
แผนก: EEE
แบทช์: 41

ID: 111346
ชื่อ: จอห์น
แผนก: CSE
แบทช์: 25

ID: 111746
ชื่อ: Thomas
แผนก: CSE
แบทช์: 15

ตัวอย่างที่ 4: แทนที่ไฟล์หลายบรรทัดโดยใช้ `sed` script file

สร้างไฟล์ sed ชื่อ to แทนที่.sed ด้วยเนื้อหาต่อไปนี้เพื่อแทนที่หลายบรรทัดตามรูปแบบการค้นหา ที่นี่คำว่า ' CSE ' จะถูกค้นหาในไฟล์ข้อความ และหากมีการจับคู่อยู่ มันจะค้นหาหมายเลข 35 และ 15 อีกครั้ง หากมีการจับคู่ที่สองในไฟล์ ไฟล์นั้นจะถูกแทนที่ด้วยหมายเลข 45

แทนที่.sed

/CSE/ {
พี; น;
/35/ {
NS/35/สี่ห้า/;
p;d;
}
/สิบห้า/ {
NS/สิบห้า/55/;
p;d;
}
}
NS;

รันคำสั่งต่อไปนี้เพื่อตรวจสอบเนื้อหาที่มีอยู่ของไฟล์ 'CSE' ปรากฏสี่ครั้งในไฟล์ข้อความ 35 และ 15 อยู่ในสองแห่ง

$แมวนักเรียน.txt

คำสั่งต่อไปนี้จะแทนที่เนื้อหาของหลายบรรทัดตามสคริปต์ sed

$sed -NS -NSแทนที่.sed นักเรียน.txt

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

บทสรุป

วิธีต่างๆ ในการแทนที่หลายบรรทัดหรือเนื้อหาของหลายบรรทัดโดยใช้คำสั่ง `sed' ได้แสดงไว้ในบทช่วยสอนนี้ วิธีเรียกใช้สคริปต์ `sed' จากไฟล์ sed จะแสดงในบทช่วยสอนนี้ด้วย ฉันหวังว่าบทช่วยสอนนี้จะช่วยให้ผู้อ่านแทนที่ไฟล์หลายบรรทัดโดยใช้คำสั่ง `sed'