Об'єднайте кілька текстових файлів в один файл


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-bet between- files- im- concatenating- with- cat


дякую за пропозицію однак -T не розпізнається Я працюю над mac os x, якщо це має значення.
Джанет

на жаль, -t створює файл того ж типу, що і кіт, не має перерви між текстовими файлами, прочитаними в.
janet

дякую Раду що ось-ось отримує мене те, що я хочу! Вибачте, я зараз розумію, що я надсилаю повідомлення в неправильному місці, оскільки я бачу повідомлення про те, що вони не є темою. я дякую вам за допомогу!
janet

12

Щоб мати порожні рядки між файлами:

cat file1 newline file2 newline file3 > newfile

Де "новий рядок" - файл із порожнім рядком.


Чи можете ви уточнити, як зробити файл newline? Деякі текстові редактори автоматично додають символ в кінці рядка до останнього рядка, а інші - ні, тому у деяких людей можуть виникнути проблеми із створенням цього файлу належним чином. Іншим чином: чи файл нульової довжини має нульові рядки, або один рядок?
Елія Каган

vim newline in vim: wq Це все.
Дарій Житкевічус

Поки я бачу, "cat" автоматично ставить новий рядок між кожним файлом.
myuce

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

Вищенаведене додасть вміст файлу tac eacb у concatenized.txt, додавши між ними новий рядок.


0

Ви можете використовувати catдля скидання тексту файлів в один файл за допомогою:

cat file1 file2 file3 > newfile

2
На жаль cat, не відповідає жодній з інших вимог.
Ігнасіо Васкес-Абрамс

1
так дякую. але кішка просто перераховує вміст кожного файлу без оригінального імені текстового файлу, а також перераховує вміст кожного файлу один за одним, без перерви між ними. мені потрібно щонайменше 1 порожній рядок між вмістом кожного текстового файлу в новому великому файлі.
janet
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.