J'ai un fichier texte de ce type et je rechercherais toutes les lignes contenant la chaîne Validating Classification
, puis obtenez uniquement les erreurs signalées. Je ne connais pas les types d'erreurs possibles.
Fichier d'entrée:
201600415 10:40 Error Validating Classification: error1
201600415 10:41 Error Validating Classification: error1
201600415 10:42 Error Validating Classification: error2
201600415 10:43 Error Validating Classification: error3
201600415 10:44 Error Validating Classification: error3
Fichier de sortie
201600415 10:40 Error Validating Classification: error1
201600415 10:42 Error Validating Classification: error2
201600415 10:43 Error Validating Classification: error3
Puis-je y parvenir en utilisant grep, des tuyaux et d'autres commandes?
Vous devrez supprimer les horodatages, mais 'grep' et 'sort --unique' ensemble peuvent le faire pour vous.
grep --only-matching 'Validating Classification.*' | sort --unique
Donc grep -o
n'affichera que les parties de la ligne qui correspondent à votre expression régulière (c'est pourquoi vous devez inclure le .*
pour tout inclure après la correspondance "Validation de la classification"). Ensuite, une fois que vous avez juste la liste des erreurs, vous pouvez utiliser sort -u
pour obtenir uniquement la liste unique des erreurs.
Vous pouvez utiliser cette commande en supposant vos données dans le test de fichier
uniq -f 2 <test
J'irais avec awk
awk -F: '{ if (!a[$3]++ ) print ;}' file
-F:
utiliser: comme séparateur$3
est le modèle après :
!a[$3]++
assurez-vous d'être vrai uniquement lors de la première occurrence