ฉันเข้าใจว่าsed
เป็นคำสั่งในการจัดการไฟล์ข้อความ
จาก Googling ของฉันดูเหมือนว่าจะ-i
ทำการดำเนินการกับไฟล์เองถูกต้องหรือไม่
เกี่ยวกับ'1d'
อะไร
ฉันเข้าใจว่าsed
เป็นคำสั่งในการจัดการไฟล์ข้อความ
จาก Googling ของฉันดูเหมือนว่าจะ-i
ทำการดำเนินการกับไฟล์เองถูกต้องหรือไม่
เกี่ยวกับ'1d'
อะไร
คำตอบ:
ในsed
:
-i
ตัวเลือกจะแก้ไขไฟล์อินพุตในสถานที่
'1d'
จะลบบรรทัดแรกของไฟล์อินพุต
ตัวอย่าง:
% cat file.txt
foo
bar
% sed -i '1d' file.txt
% cat file.txt
bar
โปรดทราบว่าส่วนใหญ่คุณควรสำรองข้อมูลโดยใช้-i
ตัวเลือกเพื่อให้คุณสำรองไฟล์ต้นฉบับในกรณีที่มีการเปลี่ยนแปลงที่ไม่คาดคิด
ตัวอย่างเช่นถ้าคุณ:
sed -i.orig '1d' file.txt
ไฟล์ต้นฉบับจะถูกเก็บไว้เป็นและแฟ้มที่แก้ไขจะเป็นfile.txt.orig
file.txt
sed '1d' file.txt
พิมพ์เนื้อหาของfile.txt
; ไม่รวมบรรทัดแรก ไปยังเอาต์พุตมาตรฐาน
sed -i '1d' file.txt # GNU, NetBSD, OpenBSD
sed -i '' '1d' file.txt # FreeBSD, macOS
พิมพ์เนื้อหาของfile.txt
; ไม่รวมบรรทัดแรก กลับเข้ามาfile.txt
; เขียนทับต้นฉบับ
sed -i.back '1d' file.txt
สร้างสำเนาสำรองของต้นฉบับ (เป็นfile.txt.back
) ก่อนทำการเปลี่ยนแปลง ยกเว้น FreeBSD sed
ส่วนต่อท้าย (ที่นี่.back
) จะต้องแนบกับ-i
ตัวเลือก (ในอาร์กิวเมนต์เดียวกันไม่มีช่องว่างระหว่าง-i
และ.back
)
sed '2d' file.txt
พิมพ์เนื้อหาของfile.txt
; ไม่รวมบรรทัดที่สอง ไปยังเอาต์พุตมาตรฐาน
(การระบุหมายเลขใด ๆ จะลบบรรทัดที่เกี่ยวข้อง)
ยังเข้ากันได้กับ-i
ธง
sed '1!d' file.txt
พิมพ์เนื้อหาของfile.txt
; ยกเว้นแต่บรรทัดแรก; ไปยังเอาต์พุตมาตรฐาน
(กล่าวอีกนัยหนึ่งเฉพาะพิมพ์บรรทัดแรกเท่านั้น )
ยังเข้ากันได้กับ-i
ธง
sed '$d' file.txt
พิมพ์เนื้อหาของfile.txt
; ไม่รวมบรรทัดสุดท้าย ไปยังเอาต์พุตมาตรฐาน
ยังเข้ากันได้กับ-i
ธง
ในsed -h
มี:
-i[SUFFIX], --in-place[=SUFFIX]
edit files in place (makes backup if SUFFIX supplied)
และ 'ทำการดำเนินการกับไฟล์เอง' แน่นอนมันคือ
และman
กล่าวว่า: 'Sed เป็นเครื่องมือแก้ไขสตรีม ตัวแก้ไขสตรีมใช้เพื่อทำการแปลงข้อความพื้นฐานในอินพุตสตรีม (ไฟล์หรืออินพุตจากไพพ์ไลน์) '
ตามคำถามของคุณ
sed -i '1d' file_name
หมายถึง: ลบบรรทัดแรกในไฟล์"file_name"
ที่สถานที่และสำรองข้อมูลเป็นไฟล์ (เช่นเดียวกับการแก้ไขไฟล์และลบบรรทัดแรกโดยตรง)
-i
ดูว่าเกิดอะไรขึ้นก่อนจากนั้นใช้-i
เพื่อเปลี่ยนไฟล์จริง