“grep -w”命令不起作用

Nit*_*mar 2 grep

我有以下输入:

csdi_d_trs_proc_uxs1        26 24
csdi_d_tdp_process_uxs1     28 32
Run Code Online (Sandbox Code Playgroud)

我只需要包含proc. 当我使用:

grep proc filename 
Run Code Online (Sandbox Code Playgroud)

两行都是输出,所以我尝试使用grep -w proc filename,但没有显示输出。

我怎样才能得到只有proc但没有的线process

Kus*_*nda 11

-w为标志grep将使定表达式匹配全字。

“单词”是由“非单词字符”(或行首/行尾)包围的“单词字符”字符串。

您的情况的问题是_(下划线)恰好是一个“单词字符”,因此不能单独将单词分隔为单词proc

不要使用-wwith grep,而是使用一个明确地用 分隔单词的模式_

grep '_proc_' filename
Run Code Online (Sandbox Code Playgroud)

或者,如果您想用[^a-z]不是_小写字母字符的任何内容分隔单词,请使用代替:

grep '[^a-z]proc[^a-z]' filename
Run Code Online (Sandbox Code Playgroud)

请注意,这不会proc在行的开头/结尾识别为单词。