Le journal ressemble à: grep "erreur" log.txt me donnera toutes les trois lignes mais je ne veux que les deux premiers. Comment puis-je faire ça? P> P>
3 Réponses :
Essayez d'utiliser le motif suivant:
grep "^.*\[error\]:.*$"
Le ^. * Code> et
. * $ Code> ne fonctionnent rien d'utile.
@Edmorton Êtes-vous lié à ED Norton i>?
Vous pouvez soit grep toutes les lignes contenant ou, vous pouvez utiliser voir le Démo en ligne P> [erreur]: code>
awk code> pour vérifier si le troisième Le champ est égal à
[erreur]: code> 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
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\]"
grep "\ [erreur \]" log.txt code> pouvez-vous essayer ceci?