6

我需要有关 Unix 的帮助。我正在尝试查看两个语句(printf 和 fprintf)之一是否在文件中。我使用了命令:

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

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

4

2 回答 2

10

你有两个问题。

首先,标准grep不支持|运营商。您需要使用egrep-E标志。

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

尝试这个:

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

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

search=`cat $file | grep -w -e fprintf -e printf
于 2012-10-05T03:36:01.317 回答
0
grep -w "fprintf\|printf" $file

这在我的外壳中运行良好。不过,这里有一些替代方案:

egrep -w 'fprintf|printf' $file
grep -wE 'fprintf|printf' $file
grep -we 'fprintf\|printf' $file
于 2012-10-05T03:34:21.933 回答