Grep pour début et fin de ligne?
J'ai un fichier où je veux grep pour les lignes qui commencent par -rwx ou drwx ET à la fin de n'importe quel nombre.
J'ai, mais il n'est pas tout à fait droit. Des idées?
grep [^.rwx]*[0-9] usrLog.txt
Vous devez vous connecter pour publier un commentaire.
La partie la plus délicate, est une expression régulière qui comprend un tableau de bord comme l'un des caractères valides dans une classe de caractères. Le tableau de bord doit venir immédiatement après le début d'un (normal) classe de personnage et immédiatement après le signe d'un démenti de la classe de caractères. Si vous avez besoin d'un crochet fermant trop, alors vous devez le fermer la parenthèse carrée suivi du tableau de bord. Heureusement, vous avez seulement besoin d'un tiret, d'où la notation choisie.
Voir: Les Expressions Régulières et grep pour POSIX standard de détails.
grep -x '[-d]rwx.*[0-9]'
.-x
est POSIX. Support suivant dash:[[.-.][.].]]
(qui, est, est moins lisible que[]-]
). IIl semble comme si vous étiez sur la bonne voie... La
^
les correspondances de caractères en début de ligne, et$
correspond à la fin de la ligne. Jonathan modèle de travail pour vous... voulais juste vous donner l'explication derrière elle[ ]
classe de personnage se comporter de façon différente que dans d'autres parties de la regex.Il convient de noter que non seulement l'accent circonflexe (^) se comportent différemment à l'intérieur des crochets, il aura l'effet inverse de le placer à l'extérieur des crochets. Placer le curseur là où vous l'avez va rechercher toutes les chaînes ne commence PAS avec le contenu que vous avez placé à l'intérieur des parenthèses. Vous aussi vous voulez placer un délai avant l'astérisque entre vos supports avec grep, il agit également comme un "joker".
Cela devrait fonctionner pour vous, j'ai remarqué que certaines des affiches utilisé une classe de caractères dans leurs expressions, qui est une méthode efficace, mais vous n'étiez pas à l'aide de tout dans votre expression originale, donc je suis en train d'en obtenir un aussi proche de la vôtre que possible en expliquant chaque changement mineur le long du chemin pour qu'il soit mieux compris. Comment pouvons-nous apprendre autrement?
Vous voulez probablement egrep. Essayez:
êtes-vous l'analyse de la sortie de
ls -l
?Si vous, et vous veulent juste pour obtenir le nom de fichier
Si vous n'avez pas le choix parce que usrLog.txt est créé par quelque chose/quelqu'un d'autre et vous devez absolument utiliser ce fichier, d'autres options comprennent
Ruby(1.9+)
Bash