Объедините несколько текстовых файлов в один файл

10

Я использую команду Unix prдля объединения нескольких текстовых файлов в один текстовый файл:

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, если это имеет значение.
Джанет
к сожалению, -t создает файл того же типа, что и cat, без перерыва между читаемыми текстовыми файлами.
janet
спасибо Раду. это только дает мне то, что я хочу! извините, теперь я понимаю, что отправляю сообщение не туда, так как вижу уведомление о том, что он не по теме. Я благодарю вас за вашу помощь!
Джанет
12

Чтобы иметь пустые строки между файлами:

cat file1 newline file2 newline file3 > newfile

Где «новая строка» - это файл с пустой строкой.

Дариус Житкявичюс
источник
Можете ли вы уточнить, как сделать файл newline? Некоторые текстовые редакторы автоматически добавляют символ конца строки в последнюю строку, а другие - нет, поэтому у некоторых людей могут возникнуть проблемы при создании этого файла должным образом. Другими словами: у файла нулевой длины есть ноль строк или одна строка?
Элия ​​Каган
vim newline в vim: wq Вот так.
Дариус Житкявичюс,
Пока я вижу, "кошка" ставит новую строку автоматически между каждым файлом.
Myuce
1
for file in *.txt; do (cat "${file}"; echo) >> concatenated.txt; done

Приведенное выше добавит содержимое файла eacb txt в concatenated.txt, добавив между ними новую строку.

Франциско Луз
источник
0

Вы можете использовать catдля сброса текста файлов в один файл с помощью:

cat file1 file2 file3 > newfile
Atari911
источник
2
К сожалению cat, не соответствует ни одному из других требований.
Игнасио Васкес-Абрамс
1
да спасибо. но cat просто перечисляет содержимое каждого файла без исходного имени текстового файла, а также перечисляет содержимое каждого файла один за другим без перерыва между ними. мне нужно как минимум 1 пустую строку между содержимым каждого текстового файла в новом большом файле.
Джанет