【问题标题】:How to Search a paragraph in a file using grep and then search a specific word from the paragraph如何使用 grep 搜索文件中的段落,然后从段落中搜索特定单词
【发布时间】:2015-02-26 06:04:18
【问题描述】:

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

"Documentation can be done using 
MS excel and an eg. of such a file is sample.xls"

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

有可能吗???

【问题讨论】:

  • 我们用什么关键字来搜索上面的段落?即,您如何将上述段落与其他段落区分开来?
  • 说“Documentaion can”(两个词的组合)可以作为关键字来区分段落与其他
  • 所以您只需要该特定段落中的文件名和扩展名.xls

标签: string file unix search grep


【解决方案1】:

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

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

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

【讨论】:

  • 它正在识别不同段落中的搜索字符串以及所需的搜索字符串并返回相同的内容。我希望仅从特定段落返回搜索词。好吧,我是要去某个破旧的地方还是有其他方法??
  • 另一个需要考虑的点是“文档可以”可能不是行首,甚至可能出现在段落中间
  • 我认为每个段落之间都有一个空行。您能否发布段落的示例?
  • 例如。 java.net.socketinputstream 处的连接重置错误捕获了 sample.xls 的异常
  • 例如。 java.net.socketinputstream 处的连接重置错误捕获了 sample.xls 的异常(这里的区分 owrd 是“连接重置”)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多