web-dev-qa-db-fra.com

lignes grep commençant par "1" dans Ubuntu

J'essaie de rechercher des lignes commençant par "1" en utilisant

ls -1 | grep ^1*

mais il renvoie des lignes qui ne commencent pas par 1. Ce qui me manque ici?

48
Tim

Votre expression régulière ne signifie pas ce que vous pensez qu'elle fait. Il correspond à toutes les lignes commençant par (^) avec une (1) répétition zéro ou plusieurs (*) fois. Toutes les chaînes correspondent à cette expression régulière. grep '^1' fait ce que vous voulez.

71
otokan

Avez-vous essayé ce qui suit?

 ls -1 | grep "^1"

Autrement dit, supprimez le *, qui indique essentiellement à grep, de trouver zéro ou plusieurs occurrences de ^1 expression. En d'autres termes: faites correspondre les lignes qui commencent par un 1 ou non.

35
Bernhard

Bien que cela ne réponde pas à votre question, c'est une meilleure solution à ce qui semble être votre objectif:

ls -ld 1*

Vous pouvez utiliser un glob Shell pour répertorier tous les fichiers commençant par 1. Notez que * a une signification différente dans le globbing Shell que les expressions régulières.

13
jordanm

^ 1. * correspond à la ligne entière, ou comme indiqué ci-dessus, ^ 1 a la chaîne contenue dans la ligne.

différents styles d'expression régulière utilisent différents symboles représentant des caractères, certaines options spécifient le style que vous souhaitez. et différentes options spécifient si vous voulez faire correspondre la ligne entière, ou seulement une partie de celle-ci, ou l'entrée entière en une seule chaîne.

3
Shellukolle