Grep OR运算符不工作

时间:2012-10-05 03:29:28

标签: unix grep operator-keyword

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

search=`cat $file | grep -w "fprintf\|printf"`

由于某种原因,它在文件中找不到其中一个存在。为什么呢?

2 个答案:

答案 0 :(得分:9)

你有两个问题。

首先,standard grep不支持|运算符。您需要使用egrep-E标记。

其次,在双引号内,\|表示\|。反斜杠会传递给grep命令,因此即使grep理解|运算符,反斜杠也会将其转换为普通字符。

试试这个:

search=`cat $file | egrep -w "fprintf|printf"`

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

search=`cat $file | grep -w -e fprintf -e printf

答案 1 :(得分:0)

grep -w "fprintf\|printf" $file

这在我的shell中工作正常。不过,这里有一些替代方案:

egrep -w 'fprintf|printf' $file
grep -wE 'fprintf|printf' $file
grep -we 'fprintf\|printf' $file