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}'

関連情報