2017-09-15 1 views
-2

J'ai un fichier d'exception exception.txt, qui contient toutes les lignes d'exception survenues hier.comment filtrer les journaux de mon fichier journal

Exemple:

Null pointer exception 
Socket exception 
Network exception 
End of file exception. 

J'ai aussi fichier de filtre filter.txt, qui contient quelques mots-clés d'exception comme

End of file exception 
Null pointer exception 

Je voudrais créer un fichier newexception.txt avec script shell en filtrant les lignes sont mentionnés dans filter.txt. Fondamentalement, il devrait être une copie de exception.txt en ignorant les lignes de filter.txt.

Quelle serait la meilleure façon de le faire?

Répondre

0

Vous pouvez lire toutes les lignes de votre fichier de filtre et former une expression régulière de celle-ci:

lines=`cat filter.txt` 
regex=${lines//$'\n'/|} 
egrep -v "$regex" exception.txt 

Cela aplatir les lignes de filtre en une seule chaîne en remplaçant les nouvelles lignes avec |, de sorte que votre regex ressemblerait à End of file exception|Null pointer exception. De cette façon, vous pouvez également utiliser des mots clés de filtre qui forment des expressions régulières par eux-mêmes, tels que so* exception. Notez que cela nécessite bash.

+0

Cela ne fonctionne pas. Je ne vois aucune sortie même après avoir donné fullpath de filter.txt et exception.txt – chandan

+0

@chandan Vous devez le taper dans un shell bash, ou ajouter une ligne '#!/Usr/bin/bash' s'il s'agit d'un script. – yacc

+0

Je l'ai fait mais je ne travaille toujours pas pour produire une sortie. – chandan

1

Si vous savez quels mots-clés vous avez sur filter.txt. Le moyen le plus simple et peut-être le plus rapide est grep, en utilisant l'option -v.

grep -v -e 'keyword1' -e 'keyword2' exception.txt