Unixの助けが必要です。2つのステートメント(printfとfprintf)のいずれかがファイルにあるかどうかを確認しようとしています。次のコマンドを使用しました:
search=`cat $file | grep -w "fprintf\|printf"`
何らかの理由で、これら2つのうちの1つが存在するファイルでも見つかりません。なんで?
Unixの助けが必要です。2つのステートメント(printfとfprintf)のいずれかがファイルにあるかどうかを確認しようとしています。次のコマンドを使用しました:
search=`cat $file | grep -w "fprintf\|printf"`
何らかの理由で、これら2つのうちの1つが存在するファイルでも見つかりません。なんで?
2つの問題があります。
まず、標準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