Я пытаюсь разбить текстовый документ, где любая строка с более чем 10 словами (слова, определенные как что-либо между пробелами с обеих сторон) должна разделяться в первом символе точки, происходящем слева направо. Любые результирующие строки, содержащие более 10 слов, также должны быть разделены.
Пример входных данных:
1I got from Dr. Smith, the OK to keep working.
2I got from Dr. Smith, the O.K. to keep working.
3I got from Dr. Smith, the OK to keep working more.
4I got from Dr. Smith, the O.K. to keep working more.
5I got from Dr. Smith, the O.K. to keep working more, although I'm sick.
6I got from Dr. Smith, the O.K. to keep working more, although I'm so sick.
Желаемые выходные данные:
1I got from Dr. Smith, the OK to keep working.
2I got from Dr. Smith, the O.K. to keep working.
3I got from Dr.
Smith, the OK to keep working more.
4I got from Dr.
Smith the O.K. to keep working more.
5I got from Dr.
Smith, the O.K. to keep working more, although I'm sick.
6I got from Dr.
Smith, the O.K.
to keep working more, although I'm so sick.
Я пробовал следующий код:
sed -r ':a; /((\w)+[., ]+){11}/s/\./\r\n/; ta' grab.txt | tr '\r' '.' > output.txt
код дает следующие неточные результаты:
1I got from Dr. Smith, the OK to keep working.
2I got from Dr.
Smith, the O.K. to keep working.
3I got from Dr.
Smith, the OK to keep working more.
4I got from Dr.
Smith, the O.K. to keep working more.
5I got from Dr.
Smith, the O.K. to keep working more, although I'm sick.
6I got from Dr.
Smith, the O.K. to keep working more, although I'm so sick.
Обратите внимание, что строки 1 и 2 имеют 10 слов, но строка 2 разделяется (кажется, что добавление точек к слову ... например, слово ОК ... делает этодумаю, что в строке больше слов, чем на самом деле).
Обратите внимание, что строка 6 на самом деле должна быть разделена на 3, потому что во второй строке содержится 11 слов, но по некоторым причинам ее нет.
Я ищу решение, в которое можно было бы направить трубку.
Спасибо.