正規表現はgrepでは機能しない

正規表現はgrepでは機能しない

なぜこれが一致するのか

.*\/.+\/wp-admin.*404
[03/Sep/2021:18:58:29 +0200] "GET /up/wp-admin/install.php HTTP/1.1" 404 6197

regexr.com

しかし、grep ではそうではないのでしょうか?

sudo grep -rh ".*\/.+\/wp-admin.*404" /var/log/apache2/ | wc -l
0

その行がそのフォルダーに存在することはわかっています。+ を * に置き換えると機能します。

答え1

GNU grepでは、「+」文字をバックスラッシュでエスケープする必要があります。これを試してください。grep -rh ".*\/.\+\/wp-admin.*404" /var/log/apache2/ | wc -l

関連情報