grep entiers non alphanumériques et non numériques

si j’ai:

abc a1b2c3 123 

Comment puis-je grep des chaînes entières qui ne sont pas un caractère alphanumérique ou un nombre pour que je puisse obtenir

 abc 

Je pensais pouvoir utiliser le drapeau -F en conjonction avec [^0-9]

 grep -F '[^0-9]' filename 

et renvoyer des chaînes complètes qui ne contiennent pas de nombres – mais cela ne renvoie rien.

Aucune suggestion?

Si vous voulez simplement faire correspondre les mots alpha, ceux sans partie numérique, dites:

 grep -o "\b[[:alpha:]]*\b" 
  • \b correspond à la chaîne vide au bord d’un mot
  • [[:alpha:]] correspond aux caractères alpha. C’est-à-dire, A-Za-z plus vos locaux.

Avec votre exemple:

 $ echo "abc a1b2c3 123" | grep -o "\b[[:alpha:]]*\b" abc 

Comme ça :

 grep -wo '[^0-9]*' file 
  • -w – correspond à des mots entiers
  • -o – Affiche uniquement le motif correspondant

Vous pouvez utiliser --word-regexp ( -w ) pour faire correspondre uniquement les mots qui ne contiennent aucun chiffre:

 $ grep -wo '[^[:digit:]]\+' <<<'abc a1b2c3 123' abc 

-o imprimera uniquement la partie correspondante.