Grep OR运算符不工作

Bry*_*ere 6 unix grep operator-keyword

我需要帮助Unix.我试图看看两个语句(printf和fprintf)中的一个是否在文件中.我使用了命令:

search=`cat $file | grep -w "fprintf\|printf"`
Run Code Online (Sandbox Code Playgroud)

出于某种原因,它在文件中找不到这两者中的一个存在.为什么?

rob*_*off 10

你有两个问题.

首先,标准grep不支持|运营商.你需要使用egrep或者-E标志.

第二,内部双引号,\|意思是\|.反斜杠会传递给grep命令,因此即使grep理解了|运算符,反斜杠也会将其转换为普通字符.

试试这个:

search=`cat $file | egrep -w "fprintf|printf"`
Run Code Online (Sandbox Code Playgroud)

或者您可以将每个备选方案作为单独的参数提供给grep:

search=`cat $file | grep -w -e fprintf -e printf
Run Code Online (Sandbox Code Playgroud)

  • GNU grep支持它很好. (2认同)