将多个文本文件合并为一个文件


10

我正在使用unix pr命令将多个文本文件合并为一个文本文件:

pr -F *files > newfile

每个文件的长度不同,行数也不同。我对结果感到满意,我喜欢它包含原始文本文件的名称,后跟该文件的内容。但是,我想消除原始文本文件的名称与其内容之间的空白行。我只希望不同文本文件之间的空白行将它们分开。另外,它^L在每个文本文件的内容之后打印字符,我想消除该字符。

每个读入的文件也被赋予一个“页码”。只有一个文件长于默认的66行。该文件最终被吐到2个“页面”中,并被分成两部分,各部分由空白行分隔。是否可以不分割地连续写入文本?

感谢您的任何帮助!

Answers:


9

您可以使用AWK实用程序:

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

来源:https//stackoverflow.com/questions/1653063/how-do-i-include-a-blank-line-between-files-im-concatenating-with-cat


谢谢你的建议。但是,-T无法识别。如果这很重要,我正在Mac OS X上工作。
珍妮特

不幸的是,-t创建相同类型的文件是猫也会文本文件之间没有休息的阅读。
珍妮特

谢谢拉杜。那正好让我得到我想要的!抱歉,我现在意识到自己发到了错误的地方,因为我看到有关离题的通知。我感谢您的帮助!
珍妮特

12

要在文件之间留空行:

cat file1 newline file2 newline file3 > newfile

其中“换行”是带有空行的文件。


您能说明如何制作文件newline吗?某些文本编辑器会自动将行尾字符附加到最后一行,而其他文本则不会,因此某些人可能会在正确制作此文件时遇到问题。换句话说:零长度文件有零行还是一行?
卡根

vim:wq中的vim newline就是这样。
DariusŽitkevičius13年

只要我看到,“ 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是没有满足任何其他要求。
伊格纳西奥·巴斯克斯

1
是的,谢谢。但是cat只是列出每个文件的内容而没有原始文本文件名,并且cat也一个接一个地列出每个文件的内容,并且中间没有中断。在新的一个大文件中,每个文本文件的内容之间至少需要1个空行。
珍妮特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.