gpt4 book ai didi

linux - 如何grep一个文件并输出一行的匹配部分加上周围的几个词?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:54:33 27 4
gpt4 key购买 nike

我正在文件中搜索模式并希望限制输出,以便它不显示整行,而是显示由几个单词包围的匹配项,这样我就可以看到上下文。这些行太长,无法舒适地查看输出中的整行。我正在寻找使用 grep、awk 和/或 sed 的解决方案。 grep 有 -o 选项,如果我有正确的正则表达式,就可以使用它。

作为一项额外的功能,如果该解决方案能够选择性地支持 grep 的行号功能,那就太好了,这样行号就可以在需要时与输出一起打印出来。

更新:
这是一个测试文件:

1 2 3 4 5 abc 1 2 3 4
abc
1 2 abc
abc 1
1 abc 1
1 2 3 abc 1 2 3
1 2 3 4 abc 1
1 2 3 4 5 6
1 2 3 4 5
1 2 3
1

解决方案:

将最小单词数更改为零,这样我们就不会错过没有被任何单词包围的关键字的匹配:

egrep -no '(\w+ ){0,3}keyword( \w+){0,2}' file

例子:

egrep -no '(\w+ ){0,3}abc( \w+){0,2}' test.txt

输出:

1:3 4 5 abc 1 2
2:abc
3:1 2 abc
4:abc 1
5:1 abc 1
6:1 2 3 abc 1 2
7:2 3 4 abc 1

最佳答案

我相信您正在寻找类似的东西:

egrep -no '(\w+ ){1,3}keyword( \w+){1,2}' file

这将打印包含带有行号前缀的单词“keyword”的行。它会在比赛前最多打印三个单词,在比赛后最多打印两个单词。

\w 将匹配任何归类为“单词”字符(字母数字或 _)的单个字符。

这个答案还假定单词 a 由单个空格字符分隔。

关于linux - 如何grep一个文件并输出一行的匹配部分加上周围的几个词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394460/

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