String 如何使用grep搜索文件中的段落,然后从段落中搜索特定单词

String 如何使用grep搜索文件中的段落,然后从段落中搜索特定单词,string,file,unix,search,grep,String,File,Unix,Search,Grep,我想从文件中搜索以下段落,然后显示段落中的特定单词。 例如 我想从example.log文件中搜索上述段落,然后只显示单词“sample.xls” 是否可能???如果您的grep支持-p,perl regexp参数,那么您可以简单地使用下面的grep命令 $ grep -ozP '(?:.+\n)*.*\bDocumentation can\b.*(?:\n.+)*' file | grep -o '[^ ]\+\.xls\b' sample.xls 第一个grep用于获取特定段落,下一个gr

我想从文件中搜索以下段落,然后显示段落中的特定单词。 例如

我想从example.log文件中搜索上述段落,然后只显示单词“sample.xls”


是否可能???

如果您的grep支持
-p
,perl regexp参数,那么您可以简单地使用下面的grep命令

$ grep -ozP '(?:.+\n)*.*\bDocumentation can\b.*(?:\n.+)*' file | grep -o '[^ ]\+\.xls\b'
sample.xls

第一个grep用于获取特定段落,下一个grep用于获取该段落中具有特定扩展名的文件。

我们在搜索上述段落时使用了什么关键字?也就是说,你如何将上述段落与其他段落区分开来?说“Documentation can”(两个词的组合)可以用作关键字以区分段落与其他段落。如果您希望文件名和扩展名
.xls
仅来自该特定段落,则需要识别不同段落中的搜索字符串以及所需的搜索字符串,并返回相同的搜索字符串。我希望搜索词仅从特定段落返回。嗯,我是要去某个地方,还是有不同的方法?需要考虑的另一点是,“文档可以”可能不是一行的开头。它甚至可能发生在段落的中间。我认为每个段落之间都有一个空行。您可以发布段落的示例吗?例如,java.net.socketinputstream的连接重置错误捕获了sample.xls的异常。例如,java.net.socketinputstream的连接重置错误捕获了sample.xls的异常(这里的区别owrd wd是“连接重置”)
$ grep -ozP '(?:.+\n)*.*\bDocumentation can\b.*(?:\n.+)*' file | grep -o '[^ ]\+\.xls\b'
sample.xls