我希望将信息存储在文本文件中,并使用grep进行搜索。使用命令grep -in <keyword> <file>,我可以显示行号,行包含关键字。但是,如果该行包含一长行文本,则输出的可读性有时会降低。
可以用搜索结果的+/- 3字而不是整行显示grep命令输出吗?
我正试着得到这样的结果
$grep -in linux grep_test.txt
1:Linux-based系统是
1:单片内核,Linux内核,它处理
3:大多数Linux-based系统的一部分,提供
3:大多数Linux系统都使用它。
3:最近,Linux社区试图

发布于 2015-11-07 05:58:20
让我们使用这个测试文件:
$ 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}匹配它所遵循的模式的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 cathttps://stackoverflow.com/questions/33579606
复制相似问题