У меня есть файл по имени Au7. ANI, который имеет следующий формат:
Каждый раз номер 37 появляется как заголовок, это означает, что это - новый набор координат, которые следуют за ним. Это повторяется во времена файла 2,000.
То, что я хочу сделать, разделяется этот файл во многие файлы путем добавления 37 наверху каждого файла с, он - соответствующий набор координат xyz, которые следуют за ним.
Это должно произвести 2 000 файлов, так как существует 2,000 отдельных координат xyz в том файле.
Как я могу сделать, это и каждый файл назвали coord.xyz_1, coord.xyz_2, и т.д. до coord.xyz_2000?
Спасибо!
Я, вероятно, достиг бы csplit, а не жемчуга: трудно дать точный (протестированный) ответ, так как Вы отправили png изображение своего файла вместо фактического текста, но чего-то как
csplit -f 'coord.xyz_' -b '%d' yourfile '/^[[:space:]]*37$/' '{*}'
где
-f 'coord.xyz_'
устанавливает выходной префикс имени файла-b '%d'
устанавливает вывод числовой суффиксный формат на незаполненные десятичные цифры/^[[:space:]]*37$/
соответствия 37
дополнительно предшествовавший пробелом{*}
говорит для повторения предыдущего шаблона максимально много разОбратите внимание, что регулярное выражение могло возможно быть упрощено на основе фактического содержания Вашего файла: например, если 37
маркер всегда располагается с отступом единственной вкладкой, Вы могли уменьшить его до /^\t37$/
.
Если Вы хотите реализовать что-то эквивалентное в жемчуге (согласно Вашему тегу), то на основе этого предложения, Как я могу разделить текстовый файл на несколько текстовых файлов? Вы могли попробовать
perl -ne 'open(F, ">", "coord.xyz_".++$n) if /[[:space:]]*37/; print F;' yourfile