รวมไฟล์ข้อความหลายไฟล์ไว้ในไฟล์เดียว


10

ฉันใช้prคำสั่งunix เพื่อรวมไฟล์ข้อความหลายไฟล์เป็นไฟล์ข้อความเดียว:

pr -F *files > newfile

แต่ละไฟล์มีความยาวต่างกันจำนวนบรรทัดที่แตกต่างกัน ฉันส่วนใหญ่มีความสุขกับผลลัพธ์ที่ฉันชอบมันรวมถึงชื่อของไฟล์ข้อความต้นฉบับตามด้วยเนื้อหาของไฟล์นั้น อย่างไรก็ตามฉันต้องการกำจัดบรรทัดว่างระหว่างชื่อของไฟล์ข้อความต้นฉบับและเนื้อหา ฉันต้องการให้บรรทัดว่างระหว่างไฟล์ข้อความต่างกันเพื่อแยกแต่ละไฟล์ นอกจากนี้มันยังพิมพ์ตัวอักษร^Lตามเนื้อหาของไฟล์ข้อความแต่ละไฟล์และฉันต้องการกำจัดตัวละครนั้น

แต่ละไฟล์ที่อ่านจะได้รับหมายเลข 'หน้า' ไฟล์เดียวมีความยาวมากกว่าค่าเริ่มต้น 66 บรรทัด ไฟล์นั้นจะถูกแยกออกเป็น 2 'เพจ' และแบ่งออกเป็น 2 ส่วนหารด้วยบรรทัดว่าง เป็นไปได้ไหมที่จะเขียนข้อความต่อเนื่องโดยไม่แยกออก?

ขอบคุณสำหรับความช่วยเหลือ!

คำตอบ:


9

คุณสามารถใช้ยูทิลิตี้ AWK:

awk 'FNR==1{print ""}{print}' *files > newfile

ที่มา: /programming/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat


ขอบคุณสำหรับคำแนะนำ อย่างไรก็ตาม -T ไม่ได้รับการยอมรับ ฉันกำลังทำงานกับ mac os x หากเป็นเช่นนั้น
janet

โชคไม่ดีที่ -t สร้างชนิดเดียวกันของไฟล์ว่าแมวไม่หยุดพักระหว่างไฟล์ข้อความใดอ่านใน.
เจเน็ต

ขอบคุณ Radu แค่ทำให้ฉันได้ในสิ่งที่ฉันต้องการ! ขออภัยตอนนี้ฉันรู้ว่าฉันกำลังโพสต์ไปยังสถานที่ที่ไม่ถูกต้องเนื่องจากฉันเห็นการแจ้งเตือนเกี่ยวกับการปิดหัวข้อ ฉันขอขอบคุณสำหรับความช่วยเหลือ!
janet

12

ในการมีไฟล์ว่างเปล่าคั่นระหว่างไฟล์:

cat file1 newline file2 newline file3 > newfile

โดยที่ 'newline' เป็นไฟล์ที่มีบรรทัดว่าง


คุณช่วยอธิบายวิธีสร้างไฟล์ได้newlineอย่างไร? เครื่องมือตกแต่งข้อความบางตัวจะต่อท้ายอักขระบรรทัดท้ายโดยอัตโนมัติและอื่น ๆ จะไม่ดังดังนั้นบางคนอาจประสบปัญหาในการทำให้ไฟล์นี้ถูกต้อง วิธีนี้คือวิธีอื่น: ไฟล์ที่มีความยาวเป็นศูนย์จะมีเส้นศูนย์หรือหนึ่งบรรทัดหรือไม่?
Eliah Kagan

เป็นกลุ่มขึ้นบรรทัดใหม่ในกลุ่ม: wq นั่นแหล่ะ
Darius Žitkevičius

ตราบใดที่ฉันเห็น "cat" วางบรรทัดใหม่โดยอัตโนมัติระหว่างแต่ละไฟล์
myuce

1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

ด้านบนจะต่อท้ายเนื้อหาของไฟล์ eacb txt ใน concatenated.txt เพิ่มบรรทัดใหม่ระหว่างพวกเขา


0

คุณสามารถใช้catเพื่อดัมพ์ข้อความของไฟล์เป็นไฟล์เดียวด้วย:

cat file1 file2 file3 > newfile

2
น่าเสียดายที่catไม่ได้ปฏิบัติตามข้อกำหนดอื่น ๆ
Ignacio Vazquez-Abrams

1
ใช่ขอบคุณ. แต่ cat เพียงแค่แสดงรายการเนื้อหาของแต่ละไฟล์โดยไม่มีชื่อไฟล์ข้อความต้นฉบับและมันก็จะแสดงรายการเนื้อหาของแต่ละไฟล์ทีละไฟล์โดยไม่มีการหยุดพักระหว่างกัน ฉันต้องการบรรทัดว่างอย่างน้อย 1 บรรทัดระหว่างเนื้อหาของไฟล์ข้อความแต่ละไฟล์ในไฟล์ใหม่ที่มีขนาดใหญ่
Janet
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.