Linux 使用grep在很长的字符串中搜索单词

Linux 使用grep在很长的字符串中搜索单词,linux,bash,text,grep,bigdata,Linux,Bash,Text,Grep,Bigdata,我有一个巨大的文件,其中包含一个唯一的长字符串。我需要在那个文件中搜索一个特定的单词。当然,我不能使用gedit或类似的软件,因为它们会堵塞。因此,解决方案可以是grep。问题是,如果单词匹配,它会将完整字符串返回到shell中,因此我无法找到单词所在的位置,也无法观察附近的其他单词 是否有任何特定的选项可以传递,以便在找到“我的单词”后立即停止/暂停grep shell流(例如,匹配后一定数量的字符)?使用该选项: 在NUM匹配行之后停止读取文件。如果输入是来自常规文件的标准输入,并且输出NU

我有一个巨大的文件,其中包含一个唯一的长字符串。我需要在那个文件中搜索一个特定的单词。当然,我不能使用
gedit
或类似的软件,因为它们会堵塞。因此,解决方案可以是
grep
。问题是,如果单词匹配,它会将完整字符串返回到shell中,因此我无法找到单词所在的位置,也无法观察附近的其他单词

是否有任何特定的选项可以传递,以便在找到“我的单词”后立即停止/暂停grep shell流(例如,匹配后一定数量的字符)?

使用该选项:

在NUM匹配行之后停止读取文件。如果输入是来自常规文件的标准输入,并且输出NUM匹配行,则grep确保标准输入在退出之前定位在最后一个匹配行之后,而不管是否存在后续上下文行。这使调用进程能够恢复搜索。当grep在NUM匹配行之后停止时,它将输出任何后续上下文行。当同时使用-c或--count选项时,grep不会输出大于NUM的计数。当同时使用-v或--invert match选项时,grep会在输出NUM个不匹配的行后停止

使用以下选项:

在NUM匹配行之后停止读取文件。如果输入是来自常规文件的标准输入,并且输出NUM匹配行,则grep确保标准输入在退出之前定位在最后一个匹配行之后,而不管是否存在后续上下文行。这使调用进程能够恢复搜索。当grep在NUM匹配行之后停止时,它将输出任何后续上下文行。当同时使用-c或--count选项时,grep不会输出大于NUM的计数。当同时使用-v或--invert match选项时,grep会在输出NUM个不匹配的行后停止

使用以下选项:

在NUM匹配行之后停止读取文件。如果输入是来自常规文件的标准输入,并且输出NUM匹配行,则grep确保标准输入在退出之前定位在最后一个匹配行之后,而不管是否存在后续上下文行。这使调用进程能够恢复搜索。当grep在NUM匹配行之后停止时,它将输出任何后续上下文行。当同时使用-c或--count选项时,grep不会输出大于NUM的计数。当同时使用-v或--invert match选项时,grep会在输出NUM个不匹配的行后停止

使用以下选项:

在NUM匹配行之后停止读取文件。如果输入是来自常规文件的标准输入,并且输出NUM匹配行,则grep确保标准输入在退出之前定位在最后一个匹配行之后,而不管是否存在后续上下文行。这使调用进程能够恢复搜索。当grep在NUM匹配行之后停止时,它将输出任何后续上下文行。当同时使用-c或--count选项时,grep不会输出大于NUM的计数。当同时使用-v或--invert match选项时,grep会在输出NUM个不匹配的行后停止


使用
-o
选项“仅显示匹配行中与模式匹配的部分。”

例如:

% cat lorem
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.                                                                                                                                              
% grep -oE '.{20}fugiat.{20}' lorem
se cillum dolore eu fugiat nulla pariatur. Exc

编辑:@tripleee建议使用E部分,以在匹配的两侧提供填充。

使用
-o
选项“仅显示匹配行中与模式匹配的部分。”

例如:

% cat lorem
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.                                                                                                                                              
% grep -oE '.{20}fugiat.{20}' lorem
se cillum dolore eu fugiat nulla pariatur. Exc

编辑:@tripleee建议使用E部分,以在匹配的两侧提供填充。

使用
-o
选项“仅显示匹配行中与模式匹配的部分。”

例如:

% cat lorem
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.                                                                                                                                              
% grep -oE '.{20}fugiat.{20}' lorem
se cillum dolore eu fugiat nulla pariatur. Exc

编辑:@tripleee建议使用E部分,以在匹配的两侧提供填充。

使用
-o
选项“仅显示匹配行中与模式匹配的部分。”

例如:

% cat lorem
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.                                                                                                                                              
% grep -oE '.{20}fugiat.{20}' lorem
se cillum dolore eu fugiat nulla pariatur. Exc

编辑:@tripleee建议使用E部分,在匹配的任何一侧添加填充。

我还需要查看匹配的附近单词,例如,
…esse cillum dolore eu fugiat nulla pariatur…
然后尝试
grep-oE.{40}单词。{40}文件
在匹配的任何一侧获得40个字符的上下文。GNU
grep
也有
--color
来突出显示匹配项。请注意,
-E
更改为不同的正则表达式语法。这里的牛肉是
{40}
,在传统的
grep
中应该是
..
;但是现代的
grep
支持同样的构造,只需要大量的反斜杠
\{40\}
我还需要查看与我匹配的单词,例如,
…esse cillum dolore eu fugiat nulla pariatur…
然后尝试
grep-oE.{40}word.{40}文件
在匹配的两侧获得40个字符的上下文。GNU
grep
也有
--color
来突出显示匹配项。请注意,
-E
更改为不同的正则表达式语法。这里的牛肉是
{40}
,在传统的
grep
中应该是
..
;但是现代的
grep
支持同样的构造,只需要大量的反斜杠
\{40\}
我还需要查看与我匹配的单词,例如,
…esse cillum dolore eu fugiat nulla pariatur…
然后尝试
grep-oE.{40}word.{40}文件
在匹配的两侧获得40个字符的上下文。GNU
grep
也有
--color
来突出显示匹配项。请注意,
-E
更改为不同的正则表达式语法。这里的牛肉是
{40}
,在传统的
grep
中应该是
..
;但是现代的
grep
支持同样的构造,只需要大量的反斜杠
\{40\}
我还需要查看与我匹配的单词,例如,
…esse cillum dolor