Sales.txt
วันที่ จำนวน พื้นที่
01/01/2020 60000 ธากา
10/02/2020 76000 Rajshahi
21/03/2020 54000 กุลนา
15/04/2020 78000 จันทปุระ
17/05/2020 45000 โบกรา
02/06/2020 67000 คูมิลลา
แทนที่สตริงในไฟล์ด้วยคำสั่ง `sed'
ไวยากรณ์พื้นฐานของ ` sed ` คำสั่งสำหรับแทนที่สตริงเฉพาะในไฟล์ได้รับด้านล่าง
ไวยากรณ์
sed -ผม 's/search_string/replace_string/'ชื่อไฟล์
ทุกส่วนของไวยากรณ์ข้างต้นได้อธิบายไว้ด้านล่าง
'-ผม' ตัวเลือกใช้เพื่อแก้ไขเนื้อหาของไฟล์ต้นฉบับด้วยสตริงการแทนที่ หากมีสตริงการค้นหาอยู่ในไฟล์
'NS' ระบุคำสั่งทดแทน
'ค้นหา_สตริง' มีค่าสตริงที่จะค้นหาในไฟล์เพื่อแทนที่
'replace_string' มีค่าสตริงที่จะใช้แทนที่เนื้อหาของไฟล์ที่ตรงกับ 'ค้นหา_สตริง' ค่า.
'ชื่อไฟล์' มีชื่อไฟล์ที่จะใช้การค้นหาและแทนที่
ตัวอย่างที่ 1: แทนที่ไฟล์ด้วยคำสั่ง 'sed'
ในสคริปต์ต่อไปนี้ ข้อความค้นหาและแทนที่จะถูกนำมาจากผู้ใช้ หากสตริงการค้นหามีอยู่ใน 'Sales.txt' สตริงนั้นจะถูกแทนที่ด้วยสตริงการแทนที่ ที่นี่ จะทำการค้นหาโดยคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่
#!/bin/bash# กำหนดชื่อไฟล์
ชื่อไฟล์='Sales.txt'
# ใช้สตริงการค้นหา
อ่าน -NS 'ป้อนสตริงการค้นหา: 'ค้นหา
#รับสายแทน
อ่าน -NS 'ป้อนสตริงแทนที่:'แทนที่
ถ้า [[ $search !='' && $replace !='' ]];แล้ว
sed -ผม 'NS/$search/$replace/ ' $ชื่อไฟล์
เป็น
เอาท์พุต
ตัวอย่างที่ 2: แทนที่ไฟล์ด้วยคำสั่ง 'sed' ด้วย 'g' และ 'i' Flag
สคริปต์ต่อไปนี้จะทำงานเหมือนตัวอย่างก่อนหน้านี้ แต่สตริงการค้นหาจะถูกค้นหาทั่วโลกสำหรับแฟล็ก 'g' และการค้นหาที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่จะเสร็จสิ้นสำหรับแฟล็ก 'i'
#!/bin/bash# ใช้สตริงการค้นหา
อ่าน -NS 'ป้อนสตริงการค้นหา: 'ค้นหา
#รับสายแทน
อ่าน -NS 'ป้อนสตริงแทนที่:'แทนที่
ถ้า [[ $search !='' && $replace !='' ]];แล้ว
sed -ผม 'NS/$search/$replace/ให้' $ 1
เป็น
เอาท์พุต
ตัวอย่างที่ 3: แทนที่ไฟล์ด้วยคำสั่ง 'sed' และรูปแบบตัวเลขที่ตรงกัน
สคริปต์ต่อไปนี้จะค้นหาเนื้อหาที่เป็นตัวเลขทั้งหมดในไฟล์ และจะแทนที่เนื้อหาด้วยการเพิ่ม '$' สัญลักษณ์ที่จุดเริ่มต้นของตัวเลข
#!/bin/bash# ตรวจสอบค่าอาร์กิวเมนต์บรรทัดคำสั่งว่ามีอยู่หรือไม่
ถ้า [ $ 1 !='' ];แล้ว
# ค้นหาสตริงทั้งหมดที่มีตัวเลขและเพิ่ม $
sed -ผม 's/[0-9]{5}/$&/g' $ 1
เป็น
เอาท์พุต
แทนที่สตริงในไฟล์ด้วย `awk` Command
NS ' อ๊าก ' คำสั่งเป็นอีกวิธีหนึ่งในการแทนที่สตริงในไฟล์ แต่คำสั่งนี้ไม่สามารถอัปเดตไฟล์ต้นฉบับได้โดยตรงเช่น ' แต่ สั่งการ.
ตัวอย่างที่ 4: แทนที่ไฟล์ด้วยคำสั่ง 'awk'
สคริปต์ต่อไปนี้จะจัดเก็บเนื้อหาที่อัปเดตใน temp.txt ไฟล์ที่จะเปลี่ยนชื่อเป็นไฟล์ต้นฉบับ
#!/bin/bash# ตรวจสอบค่าอาร์กิวเมนต์บรรทัดคำสั่งว่ามีอยู่หรือไม่
ถ้า [ $ 1 !='' ];แล้ว
# ค้นหาสตริงทั้งหมดตามวันที่
awk '{sub('02/06/2020','12/06/2020')}1' $ 1 >temp.txt&& mvtemp.txt$ 1
เป็น
เอาท์พุต
บทสรุป
บทความนี้แสดงให้คุณเห็นถึงวิธีใช้สคริปต์ทุบตีเพื่อแทนที่สตริงเฉพาะในไฟล์ งานเพื่อแทนที่สตริงในไฟล์ควรจะง่ายขึ้นสำหรับคุณหลังจากฝึกตัวอย่างข้างต้น