Je dois filtrer toutes les lignes avec des mots commençant par une lettre suivie de zéro ou plusieurs lettres ou chiffres, mais pas de caractères spéciaux (essentiellement des noms qui pourraient être utilisés pour une variable C++).Expression régulière Script shell Unix
egrep '^[a-zA-Z][a-zA-Z0-9]*'
Cela fonctionne très bien pour des mots tels que « un », « AB10 », mais il comprend aussi des mots comme « b.b ». Je comprends que * à la fin de l'expression est un problème. Si je remplace * par + (un ou plusieurs), il ignore les mots qui contiennent une seule lettre, donc cela n'aide pas.
EDIT: Je devrais être plus précis. Je veux trouver des lignes avec n'importe quel nombre de mots possibles comme décrit ci-dessus. Voici un exemple:
int = 5;
cout << "hello";
//some comments
Dans ce cas, il doit imprimer toutes les lignes ci-dessus comme tous comprennent au moins un mot qui adapte les conditions décrites, et la ligne n'a pas commencé par la lettre.
Un problème ici est que^fait référence au début d'une ligne, mais vous êtes intéressé par n'importe quelle ligne contenant un mot. Je suggère une modification. – JXG