grep avec regex pour le numéro de téléphone

Je voudrais obtenir les numéros de téléphone à partir d'un fichier. Je sais que les nombres ont des formes différentes, je peux gérer pour un seul, mais vous ne savez pas comment obtenir un uniforme regex. Par exemple

  1. xxx-xxx-xxxx
  2. (xxx)xxx-xxxx
  3. xxx xxx xxxx
  4. xxxxxxxxxx

Je ne peut gérer que les 1, 2 et 4 ainsi que

grep '[0-9]\{3\}[ -]\?[0-9]\{3\}[ -]\?[0-9]\{4\}' file

Est-il une seule regex peut gérer l'ensemble de ces quatre formes?

source d'informationauteur skydoor