Utilisation de awk pour saisir uniquement des chiffres à partir d'une chaîne

De fond:
J'ai une colonne qui devrait obtenir la saisie de l'utilisateur sous forme de "texte de Description ref12345678". J'ai les scripts existants qui saisir le numéro de référence mais, malheureusement, certains utilisateurs d'ajouter de manière incorrecte ainsi, au lieu de "ref12345678" il peut être "ref 12345678", "RF12345678", "abcd12345678" ou de toute variation. Naturellement la mauvaise mise en forme des sauts de certains des scripts déclenchés.
Pour l'instant je ne peux pas contrôler l'entrée de l'utilisateur dans ce domaine, je tiens donc à rendre les scripts plus tard dans le pipeline juste pour faire le nombre.

Pour le moment je suis le décapage, les lettres avec awk '{gsub(/[[:alpha:]]/, "")}; 1', mais la substitution semble comme une solution inefficace. (Je sais que je peux le faire aussi avec sed -n 's/.*[a-zA-Z]//p' et tr -d '[[:alpha:]]' mais ils sont essentiellement les mêmes et je veux awk pour plus de programmabilité).

La question est, est-il un moyen de mettre awk pour imprimer uniquement les nombres à partir d'une chaîne, ou un ensemble délimite numérique des éléments dans une chaîne de caractères? (ou de substitution est vraiment la solution la plus efficace pour ce problème).

Donc en résumé: comment puis-je utiliser awk pour $ echo "ref12345678" pour imprimer uniquement "12345678", sans substitution?

OriginalL'auteur Rainer Tenhunen | 2013-05-17