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)