bsd grep
n'utilise pas les expressions régulières perl. Veuillez lire man grep
et noter ce que l'option -p
fait. Encore, man 7 re_format
explique comment fonctionne regex sous macOS avec des outils tels que grep
et sed
.
Dans votre expression régulière, le caractère \t
n'est pas interprété comme le caractère de contrôle de tabulation. Vous devrez donc taper le caractère de tabulation littéral (contrôle + v, tab) à la place -
grep -E '^([^ ]* ){2}mypattern ' FICHIER
ou vous pouvez utiliser la cotation ansi-c (Les mots de la forme $'chaîne' sont traités spécialement. Le mot se développe en chaîne, les caractères échappés par des anti-slash étant remplacés comme spécifié par la norme ANSI C.) -
grep -E $'^([^\t]*\t){2}mypattern\t' FICHIER
Vous pouvez également utiliser directement perl
-
perl -ne 'print if /^([^\t]*\t){2}mypattern\t/' FICHIER