SQL スクリプト (つまり、Oracle の外部結合式) で "(+)" の出現箇所を見つける必要があります。「+」、「(」、および「)」はすべて特殊な正規表現文字であることを認識して、次のことを試しました。
grep "\(\+\)" *
現在、これは「(+)」の発生を返しますが、他の行も返します。(同じ行に開き括弧と閉じ括弧があるものは何でも見えるようです。)括弧は拡張されたgrepだけに特別であることを思い出して、私は試しました:
grep "(\+)" * grep "(\\+)" *
これらは両方とも、「()」を含む行のみを返しました。したがって、「+」をエスケープできないと仮定して、古いトリックを試しました。
grep "([+])" *
それはうまくいきます。非正規表現ツールで結果をクロスチェックしました。
質問: 「+」文字で何が起こっているのか正確に説明できる人はいますか? 「(+)」で一致させるためのより厄介な方法はありますか?
(cygwin grep コマンドを使用しています。)
編集:解決策をありがとう。-- そして今、Bruno が参照した GNU grep マニュアルによると、" " を基本\+
式で使用すると、"+" にその拡張された意味が与えられ、したがって 1 つまたは複数の "(" の後に ") が一致することがわかりました。 "。そして、私のファイルでは常に「()」です。