У меня много текстовых файлов с данными фиксированной ширины, например ::10000
$ head model-q-060.txt
% x y
15.0 0.0
15.026087 -1.0
15.052174 -2.0
15.07826 -3.0
15.104348 -4.0
15.130435 -5.0
15.156522 -6.0
15.182609 -6.9999995
15.208695 -8.0
Данные содержат 3 или 4 прогона симуляции, все они хранятся в одном текстовом файле без разделителя между прогонами. Другими словами, нет пустой строки или чего-либо, например если бы было только 3 «записи» за прогон, это выглядело бы так для 3 прогонов:
$ head model-q-060.txt
% x y
15.0 0.0
15.026087 -1.0
15.052174 -2.0
15.0 0.0
15.038486 -1.0
15.066712 -2.0
15.0 0.0
15.041089 -1.0
15.087612 -2.0
Это выходной файл COMSOL Multiphysics для тех, кто заинтересован. Визуально вы можете сказать, где начинаются новые данные прогона, поскольку первое значение x повторяется (фактически вся вторая строка может быть одинаковой для всех из них). Поэтому мне нужно сначала открыть файл и получить это значение x, сохранить его, а затем использовать его как шаблон для сопоставления с awk или csplit. Я изо всех сил пытаюсь решить это!
csplit сделает работу:
$ csplit -z -f 'temp' -b '%02d.txt' model-q-060.txt /^15\.0\\s/ {*}
но я должен знать схему, на которую можно разделиться. Этот вопрос похож, но каждый из моих текстовых файлов может иметь различный шаблон для сопоставления: Разделение файлов на основе содержимого файла и сопоставления с шаблоном .
Бен.