Я изо всех сил старался понять очень похожий Вопрос StackOverflow, но я не могу ни на жизнь, чтобы предложенные решения gawk
или split
работали в моем случае.
У меня есть большой текстовый файл, состоящий из 288 предложений, каждое из которых имеет длину от 300 до 500 слов и состоит из разного количества абзацев (поэтому нет постоянного количества строк). Однако каждое предложение начинается с идентификатора следующего типа: --###--
или --####--
. Нет закрывающего маркера, хотя я полагаю, что мог бы вставить его, выполнив поиск по регулярному выражению и заменив исходный файл, прежде чем разбить его на несколько файлов. Мне нужна коллекция из 288 отдельных текстовых файлов, каждый из которых назван числом между двумя дефисами. Если это немного упростит задачу, я могу легко разделить файл между предложениями, озаглавленными тремя цифрами, и предложениями, озаглавленными четырьмя цифрами.
Короче говоря, я хочу сделать это:
#! /bin/env bash or python
Split all_proposals.txt into 121.txt, 122.txt, etc.
Where all_proposals.txt consists of:
--121--
One Line Title of Proposal
Followed by several paragraphs each on a line of variable length.
Another paragraph for effect.
--122--
More lines indeterminate in number.
/bin/env
не является стандартным расположением. Вы хотите/usr/bin/env
. - person William Pursell   schedule 19.06.2012csplit abstracts.txt '/--[0-9][0-9][0-9]--/' '{186}'
,csplit -f abs abstracts.txt '/--[0-9][0-9][0-9]--/' '{186}'
,awk '/--\d/ {f=1;c++} {print > "session."i}' abstracts.txt
иgawk -vRS='\n--\[0-9]{3}--\n' -vprefix="file" '{print > prefix "ab-"NR".tx t"}' abstracts_no_id.txt
... так что да, я пробовал разные вещи, которые не работали. - person John Laudun   schedule 19.06.2012