แทนที่บรรทัดใหม่ทั้งหมดเป็นช่องว่างยกเว้นบรรทัดสุดท้าย


38

ฉันจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างได้อย่างไรยกเว้นขึ้นบรรทัดใหม่ล่าสุด ฉันสามารถแทนที่บรรทัดใหม่ทั้งหมดเป็นที่ว่างโดยใช้trแต่ฉันจะทำอย่างไรกับข้อยกเว้นบางอย่าง?

คำตอบ:


42

คุณสามารถใช้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

1
เย็น! -sและ-dตัวเลือกดูเหมือนทำสำหรับกรณีนี้
mkc

10

คุณสามารถใช้trเพื่อแทนที่บรรทัดใหม่ทั้งหมดไปยังพื้นที่ว่างและส่งออกไปยังsedและแทนที่ช่องว่างสุดท้ายกลับไปที่บรรทัดใหม่:

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'



-1

สิ่งนี้ใช้ได้สำหรับฉัน

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

ที่จะลบบรรทัดใหม่ล่าสุดเช่นกัน
terdon

ฉันไม่คิดอย่างนั้นมันทำงานได้ดี คุณลองมันจริง ๆ ???
Abhijit

ใช่ฉันมี. มีไหม trคำสั่งของคุณจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างและsedคำสั่งของคุณจะลบช่องว่างสุดท้าย ผลลัพธ์นี้เป็นไฟล์ที่ไม่มีบรรทัดใหม่สุดท้ายดังนั้นจึงไม่ใช่สิ่งที่คำถามจะถาม โดยวิธีการที่ไม่มีจุด int ใช้gในsedคำสั่ง เมื่อคุณใช้$มันสามารถจับคู่ได้ในตอนท้ายเท่านั้นgไม่มีจุดหมาย คุณไม่จำเป็นต้องหลบหนีจากอวกาศเพราะ `` สร้างความแตกต่างไม่เหมือนกัน
terdon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.