执行邻近文本搜索的 Linux 终端命令是什么?
递归地搜索目录中包含:
2
单词或更多
99
单词的文件,这些单词之间的字符数
不得超过上述单词的任意顺序。
示例 1:
按城市和名字搜索
Berlin
Bob
以上输入找到一个文件,其中包含
Bob
Smith
123 Main Street Apt. 101
Berlin
Ohio USA 54321
电话...
电子邮件...
问题——灵感来自:
example2 正在运行,在网页上,不是所需的本地磁盘:
搜索2
词语:
living
soul
https://www.biblegateway.com/quicksearch/?quicksearch=living+soul&resultspp=250&version=NIV
找到 4 节经文,下面是按单词输入
的反向顺序引用的 1 句:2
soul
living
诗篇 84:2
我soul
切慕耶和华的院宇,甚至昏迷;
我的心肠和我的肉体向神呼吁living
。
而不是上面的网页邻近文本搜索......
在本地磁盘上执行
2
+ 词、邻近文本搜索的 Linux 终端命令是什么?
使用
操作系统:Kubuntu 22.04.4 LTS x86_64
显示在上面:
neofetch --stdout |grep 'OS:'
--
答案1
您可以使用“find-”、“exec”和“grep”的组合轻松实现这一点。
逻辑如下:
- 在特定路径/目录中递归查找所有文件
- 对于每个文件,执行一个 grep 命令
- 对于每个 grep 的内容,还包括匹配后的几行(例如 2)。
该命令将是(在你的 Linux Shell 中):
find /some/path/ -type f -exec egrep -hi -A2 "bob|berlin" {} +;
请注意,使用 grep:
- 选项 A:比赛结束后显示 X 行
- 选项 B:在比赛前显示 X 行
- 选项 C:在匹配前后显示 X 行
希望能帮助到你。
编辑:如果您想显示具有您正在寻找的两个值的文件中的匹配数据,您可以尝试以下操作:
grep -lri "bob" $(grep -lri "berlin" /some/path/) | xargs egrep -Hi -A2 "bob|berlin"
一些解释:
- 这段代码
grep -lri "bob" $(grep -lri "berlin" /some/path/)
将返回与您要查找的字符串 (bob & berlin) 匹配的所有文件路径。 - 该代码片段
xargs egrep -Hi -A2 "bob|berlin"
采用输入文件路径(xargs)并显示包含 bob 或 berlin(不区分大小写)的任何行 + 之后 2 行 + 行来源的文件路径。 - 选项 l(grep):返回文件名而不是内容。
- 选项 r (grep):在文件夹中进行递归搜索
- 选项 i (grep):不区分大小写。无论找到什么字母大小写,Grep 都会匹配搜索。
- 选项 H(grep):在输出中添加与结果匹配的文件路径作为前缀。
希望能够提供更多帮助。