我有一本文本格式的书。我使用pdftotext从pdf转换而成。我想从文件中提取一个随机句子。请记住,句子在行尾可能会有一个返回字符。所以我想找到一种方法来提醒下一行的句子。所以我想问题是要开始句子的开头。通常是大写字母。 “ ^ [A-Z]”,然后将所有内容移至下一个'。我已经尝试过类似
grep "^[A-Z].*.$" text.txt
但这不起作用。 还尝试使用IFS并分配“。”作为分隔符。但我正在将完整文件打印到屏幕上。如果我可以每行打印一个完整的句子,将很有帮助。
IFS=.
while read sentence;
do
echo $sentence
done < the-prince.txt
答案 0 :(得分:0)
首先,在perl中一个非常粗糙的例子。
#!/bin/perl
$/='. ';
while (<>) { push(@_, $_) if /^[A-Z]/; }
print $_[rand @_], "\n";
它不考虑问题,感叹号或引号,也不考虑Mr. Something
问题,也不会用嵌入的换行符智能地格式化句子。
还有其他问题,但是如果选择perl,这至少应该让您入门。
对于纯bash,如果这是您所需要的,我将不得不多看一些。