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