Grep 正規表現が機能しない

Grep 正規表現が機能しない

そこで、ユーザー名が 161 で始まり、その後に 3 桁の数字が続く、最後にログインしたユーザーのみを取得する簡単な grep コマンドを作成します。

last | grep "^161[0-9]{3}"

しかし、リストにこれらのユーザー名があるにもかかわらず、何も印刷されません。さらに奇妙なのは、grepの代わりにegrepを実行すると、

last | egrep "^161[0-9]{3}"

コマンドは機能します。

誰か違いを説明してくれませんか?

答え1

steeldriver がすでに指摘したように、grepは基本的な正規表現を使用しますがgrep -E、 はegrep拡張正規表現を使用します。

last | grep  '^161[0-9]\{3\}'
last | egrep '^161[0-9]{3}'

関連情報