2016-10-29 3 views
0

Ich habe eine Datei mit folgendem TextGrep in Shell eine Zeile aus bestimmten Zeichenfolge zu extrahieren

^[[8mha:AAAAYB+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0+vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ+TqucMoUEKGSCAEaSwAACsNFCqYAAAAA==^[[0m[ERROR] ^[[8mha:AAAAYB+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0+vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ+TqucMoUEKGSCAEaSwAACsNFCqYAAAAA==^[[0m[ERROR] /opt/app/ElectronicTransactionVOtoDOMapper.java:[1060,1] error: reached end of file while parsing ^[[8mha:AAAAYB+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0+vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ+TqucMoUEKGSCAEaSwAACsNFCqYAAAAA==^[[0m[ERROR] -> [Help 1] ^[[8mha:AAAAYB+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0+vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ+TqucMoUEKGSCAEaSwAACsNFCqYAAAAA==^[[0m[ERROR] ^[[8mha:AAAAYB+LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0+vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ+TqucMoUEKGSCAEaSwAACsNFCqYAAAAA==^[[0m[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch

aus dem obigen Protokoll, ich muß nur die unten extrahiere:

[ERROR] 
[ERROR] /opt/app/ElectronicTransactionVOtoDOMapper.java:[1060,1] error: reached end of file while parsing 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch 

Schließlich I sollte nicht den Junk-Wert im Log statt ich brauche eine klare Fehlermeldung.

Könnten Sie mir bitte helfen, den richtigen Befehl in der Shell zu bekommen?

+3

Bitte zeigen Sie Ihre Programmieranstrengungen. – Cyrus

+0

Ich leitete diese .. cat -v log_10-29-2016_04_12 | grep -o '\ [FEHLER. *' aber nicht sicher, dass der Befehl in allen Szenarien funktioniert. – Sakthisiga

Antwort

1

wahrscheinlich sollte sed statt grep hier verwenden.

sed -n '/ERROR/s/.*\(\[ERROR\].*\)$/\1/p' log_10-29-2016_04_12 

bekommt nur Linien das Wort ‚ERROR‘ enthalten und Streifen alles von der linken Seite des ‚[ERROR]‘ und druckt den Rest.

+0

Großartig! das funktioniert. Danke vielmals! – Sakthisiga

0
awk -vRS='^' -F "] " '/ERROR/{print "[ERROR] "$2}' file 
+0

Während dieses Code-Snippet das Problem lösen kann, erklärt es nicht, warum oder wie es die Frage beantwortet. Bitte [fügen Sie eine Erklärung für Ihren Code hinzu] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers), da dies wirklich zur Verbesserung der Qualität Ihres Posts beiträgt. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. ** Flaggers/Rezensenten: ** [Für Code-only Antworten wie diese, Downvote, nicht löschen!] (// meta.stackoverflow.com/a/260413/2747593) –

+0

Es funktioniert für mich, danke !! – Sakthisiga

0

Versuchen unter grep die Ausgabe zu erreichen -

[email protected]:~$ grep "\[ERROR\]" kk.txt |cut -c6- 
[ERROR] 
[ERROR] /opt/app/ElectronicTransactionVOtoDOMapper.java:[1060,1] error: reached end of file while parsing 
[ERROR] -> [Help 1] 
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch 

Erklärung: \[ and \] für die Flucht und -c6- nach 6.en Zeichen bis zum Ende der Zeile zu drucken.

+0

Das funktioniert auch .. Danke !! – Sakthisiga

Verwandte Themen