假设文本文件dijk
实际上不包含任何换行符,您可以在 perl 中执行此操作:
perl -MLingua::EN::Sentence=get_sentences -ne '
print "$_\n" for grep { /graph/ } @{get_sentences($_)}' dijk
Lingua::EN::Sentence 模块足够智能,可以处理众所周知的缩写,如有必要,您可以添加自己的缩写。
输出:
For a given source vertex (node) in the graph, the algorithm finds the path with lowest cost (i.e. the shortest path) between that vertex and every other vertex.
如果输入中确实存在换行符,则应该可以轻松地调整脚本。
编辑
如果输入中有换行符,您可以这样做:
perl -MLingua::EN::Sentence=get_sentences -00 -e '
$t = <>; # slurp the whole file
$t =~ tr{\n}{ }; # convert newlines to spaces
print "$_\n" for grep { /graph/ } @{get_sentences($t)}' dijk
当然,现在这看起来更像是一个成熟的 perl 脚本,而不是单行代码!
或者,正如@mklement0 所述,您可以使用外部工具tr
执行翻译并将结果传递给原始脚本:
perl -MLingua::EN::Sentence=get_sentences -ne '
print "$_\n" for grep { /graph/ } @{get_sentences($_)}' <(tr '\n' ' ' < dijk)