0
votes

Comment Texte Grep avec des crochets seulement

Le journal ressemble à: xxx

grep "erreur" log.txt me donnera toutes les trois lignes mais je ne veux que les deux premiers. Comment puis-je faire ça?


1 commentaires

grep "\ [erreur \]" log.txt pouvez-vous essayer ceci?


3 Réponses :


0
votes

Essayez d'utiliser le motif suivant:

grep "^.*\[error\]:.*$"


2 commentaires

Le ^. * et . * $ ne fonctionnent rien d'utile.


@Edmorton Êtes-vous lié à ED Norton ?



1
votes

Vous pouvez soit grep toutes les lignes contenant [erreur]: code> xxx pré>

ou, vous pouvez utiliser awk code> pour vérifier si le troisième Le champ est égal à [erreur]: code> p> xxx pré>

voir le Démo en ligne P>

#!/bin/bash
log="2019/10/04 03:03:12.938 [error]: some exception happened
2019/10/04 03:03:12.938 [error]: some exception happened
2019/10/04 03:53:35.595 [info]: there is a benign error in the code"

grep '\[error]:' <<< "$log"
# => 2019/10/04 03:03:12.938 [error]: some exception happened
#    2019/10/04 03:03:12.938 [error]: some exception happened
awk '$3 == "[error]:"' <<< "$log"
# => 2019/10/04 03:03:12.938 [error]: some exception happened
#    2019/10/04 03:03:12.938 [error]: some exception happened


0 commentaires

0
votes

Merci pour les réponses ci-dessus. Cependant, le problème est que le journal contient du code de couleur pour [Erreur] et [Info]. Dans la console, il apparaît comme [Error] tandis que dans le texte, il est en réalité [^ [[[[31MERROR ^ [[[0M]

Pour éteindre le code de couleur p>

cat xxx.log | sed 's/\x1b\[[0-9;]*m//g' | grep "\[error\]"


0 commentaires