0 votes

Terminal : utilisation de la commande grep avec le caractère '[' comme cible et non comme fonction

J'utilise le grep Dans un simple script, le problème est que la chaîne de caractères recherchée par la commande grep contient un caractère de crochet : [ .

Après quelques recherches, j'ai découvert que le crochet de fixation [ est en fait utilisé comme une fonction d'optimisation de la sortie des commandes grep par un processus appelé " pipelining "(Mais ne me citez pas car je n'en suis pas sûr).

Ma question :

Comment puis-je rechercher une chaîne de caractères contenant un caractère '[' sans invoquer une fonction de pipelining dans grep ?

Élaboration :

Le script recherche la chaîne de caractères suivante dans un journal système su[ . C'est mon commandement actuel qui fonctionne mal : tail -1 system.log | grep " su[" Cependant, il ne fonctionnera pas en raison du crochet à la fin, ce qui entraîne une erreur : grep: brackets ([ ]) not balanced .

Merci d'avance.

2voto

Mateusz Szlosek Points 21762

Les parenthèses doivent être échappées avec \ car il s'agit d'un caractère spécial. Votre commande ressemblera à :

tail -1 system.log | grep " su\["

Caractères spéciaux

De ce site Vous pouvez vous renseigner sur les caractères spéciaux dans bash.

Qu'est-ce qui rend un personnage spécial ? S'il a une signification au-delà de sa signification littérale, une méta-signification, alors nous le qualifions de caractère spécial. Avec les commandes et les mots-clés, les caractères spéciaux sont des éléments constitutifs des scripts de Bash.

\ est un caractère spécial et il peut être utilisé comme :

[ ] test.

Tester l'expression entre [ ]. Notez que [ est une partie du test intégré à l'interpréteur de commandes (et un synonyme de celui-ci), et non un lien vers la commande externe /usr/bin/test.

[[ ]] test.

Tester l'expression entre [[ ]]. Plus flexible que le test entre crochets simples [ ], c'est un mot-clé de l'interpréteur de commandes.

[ ] élément du tableau.

Dans le contexte d'un tableau, les parenthèses définissent la numérotation de chaque élément de ce tableau. Array[1]=slot_1

echo ${Array[1]}

[ ] gamme de caractères.

Dans le cadre d'une expression régulière, les parenthèses délimitent une plage de caractères à comparer.

$[ ... ] l'expansion des nombres entiers.

Évaluer l'expression entière entre $[ ].

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X