我需要有关 Unix 的帮助。我正在尝试查看两个语句(printf 和 fprintf)之一是否在文件中。我使用了命令:
search=`cat $file | grep -w "fprintf\|printf"`
出于某种原因,它在这两者之一存在的文件中都找不到。为什么?
我需要有关 Unix 的帮助。我正在尝试查看两个语句(printf 和 fprintf)之一是否在文件中。我使用了命令:
search=`cat $file | grep -w "fprintf\|printf"`
出于某种原因,它在这两者之一存在的文件中都找不到。为什么?
你有两个问题。
首先,标准grep
不支持|
运营商。您需要使用egrep
或-E
标志。
其次,在双引号内,\|
表示\|
. 反斜杠被传递给grep
命令,因此即使grep
理解|
运算符,反斜杠也会将其转换为普通字符。
尝试这个:
search=`cat $file | egrep -w "fprintf|printf"`
或者,您可以将每个备选方案作为单独的参数提供给grep
:
search=`cat $file | grep -w -e fprintf -e printf
grep -w "fprintf\|printf" $file
这在我的外壳中运行良好。不过,这里有一些替代方案:
egrep -w 'fprintf|printf' $file
grep -wE 'fprintf|printf' $file
grep -we 'fprintf\|printf' $file