ฉันจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างได้อย่างไรยกเว้นขึ้นบรรทัดใหม่ล่าสุด ฉันสามารถแทนที่บรรทัดใหม่ทั้งหมดเป็นที่ว่างโดยใช้trแต่ฉันจะทำอย่างไรกับข้อยกเว้นบางอย่าง?
ฉันจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างได้อย่างไรยกเว้นขึ้นบรรทัดใหม่ล่าสุด ฉันสามารถแทนที่บรรทัดใหม่ทั้งหมดเป็นที่ว่างโดยใช้trแต่ฉันจะทำอย่างไรกับข้อยกเว้นบางอย่าง?
คำตอบ:
คุณสามารถใช้paste -s -d ' ' file.txt:
$ cat file.txt
one line
another line
third line
fourth line
$ paste -s -d ' ' file.txt
one line another line third line fourth line
คุณสามารถใช้trเพื่อแทนที่บรรทัดใหม่ทั้งหมดไปยังพื้นที่ว่างและส่งออกไปยังsedและแทนที่ช่องว่างสุดท้ายกลับไปที่บรรทัดใหม่:
tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'
การนำแนวคิดของ vonbrandไปใช้อีกครั้งใน Perl หากไฟล์มีขนาดเล็ก:
perl -p00e 's/\n(?!\Z)/ /g' your_file
สิ่งที่sed -e 's;\n\(.\); \1;'ควรทำ ...
สิ่งนี้ใช้ได้สำหรับฉัน
tr '\n' ' ' < file_with_new_line | sed 's/\ $//g' > file_with_space
trคำสั่งของคุณจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างและsedคำสั่งของคุณจะลบช่องว่างสุดท้าย ผลลัพธ์นี้เป็นไฟล์ที่ไม่มีบรรทัดใหม่สุดท้ายดังนั้นจึงไม่ใช่สิ่งที่คำถามจะถาม โดยวิธีการที่ไม่มีจุด int ใช้gในsedคำสั่ง เมื่อคุณใช้$มันสามารถจับคู่ได้ในตอนท้ายเท่านั้นgไม่มีจุดหมาย คุณไม่จำเป็นต้องหลบหนีจากอวกาศเพราะ `` สร้างความแตกต่างไม่เหมือนกัน
-sและ-dตัวเลือกดูเหมือนทำสำหรับกรณีนี้