如何从bash中的文本文件中提取句子?

时间:2019-02-19 16:24:32

标签: regex bash while-loop ifs

我有一本文本格式的书。我使用pdftotext从pdf转换而成。我想从文件中提取一个随机句子。请记住,句子在行尾可能会有一个返回字符。所以我想找到一种方法来提醒下一行的句子。所以我想问题是要开始句子的开头。通常是大写字母。 “ ^ [A-Z]”,然后将所有内容移至下一个'。我已经尝试过类似

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

但这不起作用。 还尝试使用IFS并分配“。”作为分隔符。但我正在将完整文件打印到屏幕上。如果我可以每行打印一个完整的句子,将很有帮助。

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

1 个答案:

答案 0 :(得分:0)

首先,在perl中一个非常粗糙的例子。

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

它不考虑问题,感叹号或引号,也不考虑Mr. Something问题,也不会用嵌入的换行符智能地格式化句子。

还有其他问题,但是如果选择perl,这至少应该让您入门。

对于纯bash,如果这是您所需要的,我将不得不多看一些。