ディレクトリ内のすべてのJavaScriptファイルで関数呼び出し「init()」をgrepしたいです。 grepを使用してこれを行うにはどうすればよいですか?
特に、どのように括弧をエスケープしますか、()
?
場合によります。通常のgrepを使用する場合、エスケープしません:
echo '(foo)'|grep '(fo*)'
括弧をグループ化として使用する場合は、実際にエスケープする必要があります。
拡張正規表現 を使用すると、エスケープします:
echo '(foo)'|grep -E '\(fo*\)'
文字列「init()」を正確に検索する場合は、fgrep "init()"
またはgrep -F "init()"
を使用します。
これらは両方とも固定文字列マッチングを行います。つまり、パターンを正規表現としてではなく、検索するプレーンな文字列として扱います。また、正規表現検索を行うよりも高速だと思います。
$ echo "init()" | grep -Erin 'init\([^)]*\)'
1:init()
$ echo "init(test)" | grep -Erin 'init\([^)]*\)'
1:init(test)
$ echo "initwhat" | grep -Erin 'init\([^)]*\)'
ルートディレクトリに移動します(JavaScriptファイルの場所がわかっている場合)。次に、以下を実行します。
grep 'init()' *.js