ฉันจะแทนที่บรรทัดใหม่ทั้งหมดด้วยช่องว่างได้อย่างไรยกเว้นขึ้นบรรทัดใหม่ล่าสุด ฉันสามารถแทนที่บรรทัดใหม่ทั้งหมดเป็นที่ว่างโดยใช้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
ตัวเลือกดูเหมือนทำสำหรับกรณีนี้