echo "abc" >>file.txt
ขึ้นบรรทัดใหม่หลังจาก abc
ไม่ใช่ก่อนหน้า ถ้าคุณจบลงด้วยการabc
อยู่บนเส้นของตัวเองนั่นหมายความว่าการขึ้นบรรทัดใหม่ก่อนที่จะมีอยู่แล้วในปัจจุบันabc
file.txt
โปรดทราบว่ามันเป็นเรื่องปกติที่ไฟล์ข้อความจะสิ้นสุดในการขึ้นบรรทัดใหม่ บนยูนิกซ์บรรทัดประกอบด้วยลำดับอักขระอื่นที่ไม่ใช่null⁰หรือ newline ตามด้วย newline 1ดังนั้นไฟล์ข้อความที่ไม่ว่างจะลงท้ายด้วยอักขระบรรทัดใหม่
หากคุณต้องการเพิ่มข้อความในบรรทัดสุดท้ายของไฟล์คุณจะไม่สามารถทำได้>>
เพราะจะต่อท้ายไฟล์เสมอดังนั้นมันจะเขียนทุกครั้งหลังขึ้นบรรทัดใหม่ แต่คุณต้องการเครื่องมือที่สามารถแก้ไขไฟล์ที่มีอยู่ได้ ตัวอย่างเช่นคุณสามารถใช้sed :
sed '$ s/$/abc/' file.txt >file.txt.new && mv file.txt.new file.txt
ในคำสั่ง sed คำสั่งแรก$
หมายถึง“ ทำคำสั่งต่อไปนี้เฉพาะในบรรทัดสุดท้าย” คำสั่งs/REGEX/REPLACEMENT/
จะแทนที่ REGEX ด้วย REPLACEMENT และนิพจน์ทั่วไปจะ$
จับคู่ที่ส่วนท้ายของบรรทัด
คำสั่ง sed ของ Linux มีคุณสมบัติในตัวเพื่อสร้างลำดับไฟล์ใหม่และแทนที่โดยอัตโนมัติดังนั้นคุณจึงสามารถย่อให้สั้นลง
sed -i '$ s/$/abc/' file.txt
⁰ นั่นเป็นไบต์ที่ ASCII เรียกว่า NUL และ Unicode เรียก U + 0000 โปรแกรมประมวลผลข้อความอาจมีหรือไม่มีอักขระนี้ก็ได้
1 ดูคำจำกัดความของไฟล์ข้อความ , บรรทัดและอักขระขึ้นบรรทัดใหม่ในส่วน "คำจำกัดความ" ของบทนิยามฐานของ IEEE 1003.1-2008: 2016