У меня есть сотни текстовых файлов, которые находятся в одном каталоге.Я хотел бы иметь возможность сделать следующее:
- Объединить все файлы в один текстовый файл.Эта команда вставит символ при объединении (например,
§
) вместе с именем файла. - [Затем я делаю некоторую работу над объединенным файлом, который состоит из внесения изменений.Некоторые из этих изменений включают использование приоритетного программного обеспечения, которое лучше работает с одним большим файлом, чем с множеством маленьких файлов].
- Используйте вторую команду, чтобы просмотреть объединенный файл и разделить его на отдельные файлы, используя файлимя, которое было рядом с символом, чтобы назвать каждый файл разделения.
Пример:
Перед присоединением:
Файл 1: "Towns.txt"
Béthlem
Cabul
Corinthia
ruined lands
eshcol
Gabbatha
old town
Файл 2: «Фрукты и орехи.txt»
Apples
Pomegranates
Sycamore
После присоединения, но до внесения изменений
(один файл)
§Towns.txt
Béthlem
Cabul
Corinthia
ruined lands
eshcol
Gabbatha
old town
$Fruits and Nuts.txt
Apples
Pomegranates
Sycamore
После присоединения и внесения изменений
(Эти изменения вносятся вручную в одном файле)
§Towns.txt
Bethlehem
Cabul
Corinth
Ruined lands
Eshcol
Gabbatha
The Old Town
$Fruits and Nuts.txt
Apples
Pomegranates
Sycamore
После разделения:
Файл 1: "Города".txt "
Bethlehem
Cabul
Corinth
Ruined lands
Eshcol
Gabbatha
The Old Town
Файл 2:" Фрукты и орехи. txt "
Apples
Pomegranates
Sycamore
ШагиЯ попытался
Объединить файлы
Я переработал ответ в этой теме , чтобы создать команду awk
, которая может объединять файлы вместе с именем файла с префиксомсимвол §.
awk '(FNR==1){print "§" FILENAME }1' * > ^0join.txt;
Кажется, это хорошо работает.
Разделение файлов
Этот поток предоставляет решение для разделения файлов.Я переработал для моих нужд, чтобы сделать это:
awk -v RS='§' '{ outfile = "output_file_" NR; print > outfile}' ^0join.txt
Единственная проблема заключается в том, что выходные файлы имеют имена "outfile1", "outfile2" и т. Д. Они также держат имя файла в верхней части каждогофайл, который я не хочу.Кроме того, иногда, когда я использую эту команду, она просто помещает все в один файл с именем «outfile», а не разделяет их.
Я также нашел эту ветку , у которой было другое решение, которое я переработал:
awk '{print $0 "file" NR}' RS='§' ^0join.txt
Однако, похоже, это ничего не сделало.
Примечания
§
может быть любым другим символом.Я использую Mac OS 10.14.6, поэтому я хотел бы что-то, что будет работать в терминале Mac OS.