6

Unixの助けが必要です。2つのステートメント(printfとfprintf)のいずれかがファイルにあるかどうかを確認しようとしています。次のコマンドを使用しました:

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

何らかの理由で、これら2つのうちの1つが存在するファイルでも見つかりません。なんで?

4

2 に答える 2

10

2つの問題があります。

まず、標準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 に答える