Как извлечь предложение из текстового файла в Bash?

У меня есть книга в текстовом формате. который я конвертировал из pdf используя pdftotext. и я хочу извлечь случайное предложение из файла. имейте в виду, что предложение может иметь возвращаемый символ в конце строки. поэтому я хочу найти способ получить напоминание о предложении в следующей строке. Поэтому я думаю, что проблема будет в том, чтобы получить начало предложения. Обычно заглавная буква. "^[AZ]", а затем получить все до следующего ". Я пробовал такие вещи, как

grep "^[A-Z].*.$" text.txt

но это не работает Также попытался использовать IFS и присвоить '.' в качестве разделителя. но я получаю полный файл распечатан на экран. было бы полезно, если бы я мог напечатать полное предложение по одному в строке.

IFS=.
while read sentence; 
do 
    echo $sentence
done < the-prince.txt

1 ответ

Во-первых, очень грубый пример в Perl.

#!/bin/perl
$/='. ';
while (<>) { push(@_, $_) if /^[A-Z]/; }
print $_[rand @_], "\n";

Он не учитывает вопросы, восклицания или цитаты или Mr. Something проблема, и при этом это не будет разумно форматировать предложения со встроенными символами новой строки.

Существуют и другие проблемы, но, по крайней мере, это должно помочь вам начать работу, если Perl является опцией.

Для чистого bash, если это то, что вам нужно, мне придется поискать немного больше.

Другие вопросы по тегам