J'essaie de rechercher des lignes commençant par "1" en utilisant
ls -1 | grep ^1*
mais il retourne des lignes qui ne commencent pas par 1. Qu'est-ce qui me manque ici?
J'essaie de rechercher des lignes commençant par "1" en utilisant
ls -1 | grep ^1*
mais il retourne des lignes qui ne commencent pas par 1. Qu'est-ce qui me manque ici?
ls
sortie, vous rencontrerez des problèmes si les noms de fichiers contiennent des caractères étranges, tels que des nouvelles lignes ... De nombreuses autres commandes (ls
du moins pas, du moins pas la version que je dois vérifier) avoir une option pour donner une sortie séparée null, que vous pouvez ensuite traiter en toute sécurité avecgrep -z
Réponses:
Votre expression habituelle ne signifie pas ce que vous pensez que cela fait. Il fait correspondre toutes les lignes commençant (^) avec un (1) zéro ou plusieurs fois (*) répété. Toutes les chaînes correspondent à cette expression régulière.
grep '^1'
fait ce que tu veux.la source
Avez-vous essayé ce qui suit?
En d’ autres termes , supprimez-en ce
*
qui indique essentiellement que vousgrep
trouvez zéro ou plusieurs occurrences de l’^1
expression. En d'autres termes: faites correspondre les lignes qui commencent par un 1 ou non.la source
Bien que cela ne réponde pas à votre question, il s'agit d'une meilleure solution à ce qui semble être votre objectif:
Vous pouvez utiliser un shell glob pour lister tous les fichiers qui commencent par
1
. Notez que la*
signification de l'éclat du shell est différente de celle des expressions régulières.la source
*
est un caractère générique qui signifie « 0 ou plus de tout caractère ». La signification de l'expression rationnelle est expliquée dans la réponse d'otokan.^ 1. * correspond à la ligne entière ou, comme indiqué ci-dessus, ^ 1 a obtenu la chaîne contenue dans la ligne.
différents styles de regex utilisent différents symboles représentant des caractères, certaines options spécifient le style souhaité. et différentes options spécifient si vous souhaitez faire correspondre toute la ligne, ou seulement une partie de celle-ci, ou toute l'entrée en une seule chaîne.
la source