我需要帮助Unix。 我试图看看两个语句(printf和fprintf)中的一个是否在文件中。我用了命令:
search=`cat $file | grep -w "fprintf\|printf"`
由于某种原因,它在文件中找不到其中一个存在。为什么呢?
答案 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