A {4}
é uma expressão regular estendida . grep
não vai entender, a menos que você especifique a opção -E
:
-E, --extended-regexp
Interpret PATTERN as an extended regular expression (ERE, see below). (-E is specified by POSIX.)
tente com
grep -E '[0-9]{4}'
exemplo
$ echo abcd1234abcd | grep -o -E '[0-9]{4}'
1234
você também pode usar a classe de caractere [:digit:]
para evitar problemas com locais onde a ordem dos símbolos pode ser diferente:
$ echo abcd1234abcd | grep -o -E '[[:digit]]{4}'
1234
se, por algum motivo, você não quiser usar expressões regulares estendidas, poderá usar
grep -o '[0-9][0-9][0-9][0-9]'