gpt4 book ai didi

linux - 是否可以显示搜索关键字的 +/- 3 个单词的 grep 输出?

转载 作者:太空宇宙 更新时间:2023-11-04 09:28:57 25 4
gpt4 key购买 nike

我想将信息存储在一个文本文件中,并使用 grep 进行搜索。使用命令 grep -in <keyword> <file> ,我可以显示行号并且该行包含关键字。但是,如果该行包含一长行文本,有时输出的可读性会降低。

是否可以用搜索结果的 +/- 3 个词而不是整行来显示 grep 命令输出?

我想得到这样的结果
$grep -in linux grep_test.txt
1: 一个基于 Linux 的系统是一个
1: monolithic kernel,Linux内核,处理
3:大部分基于Linux的系统的一部分,提供
3:构建了大多数Linux系统所使用的
3: 最近,Linux 社区寻求

enter image description here

最佳答案

让我们使用这个测试文件:

$ cat file
a cat
a is for a cat and b is for bat
aa bb cat
cat in hat

并且,让我们使用这个正则表达式在前后最多三个词:

$ grep -inoE '(\w+\W+){0,3}cat(\W+\w+){0,3}' file
1:a cat
2:is for a cat and b is
3:aa bb cat
4:cat in hat

-o 选项告诉 grep 匹配的部分。

在正则表达式中,\w表示单词字符,\W表示任何非单词字符的字符。 {0,3} 匹配它遵循的模式中的零到三个。因为 grep 正则表达式在默认情况下是贪婪的,所以它会尝试尽可能多地匹配这三个词。

控制高亮

要仅突出显示搜索词,在本例中为 cat,请使用两个 grep:

grep -inoE '(\w+\W+){0,3}cat(\W+\w+){0,3}' file | grep -i cat

因为第一个 grep 将其输出发送到管道,所以它没有突出显示。相比之下,第二个 grep 确实将其输出发送到终端,因此它用于突出显示我们想要突出显示的内容。

上面假设你有一个很常见的 grep --color=auto 作为 grep 的别名。这告诉 grep 在输出到终端时应用颜色,但如果输出到文件或管道则不应用颜色。

如果您没有 --color=auto,那么您可以为最后一个 grep 显式打开颜色:

grep -inoE '(\w+\W+){0,3}cat(\W+\w+){0,3}' file | grep -i --color cat

关于linux - 是否可以显示搜索关键字的 +/- 3 个单词的 grep 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33579606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com