2016-10-29 2 views
0

У меня есть файл с текстом нижеGrep в командной строке для извлечения строки из определенной строки

^[[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

из приведенного выше журнала, я должен извлечь только ниже:

[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 

В конце концов, я не должен получать значение нежелательной почты в журнале, вместо этого мне нужно четкое сообщение об ошибке.

Не могли бы вы помочь мне в получении правильной команды в оболочке?

+3

Пожалуйста, покажите свои усилия по кодированию. – Cyrus

+0

Я получил это .. cat -v log_10-29-2016_04_12 | grep -o '\ [ERROR. *' , но не уверен, что команда работает во всех сценариях. – Sakthisiga

ответ

1

Вероятно, здесь следует использовать sed, а не grep.

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

получает только строки, содержащие слово «ERROR» и полосы все слева от '[ERROR] и печатает все остальное.

+0

Отлично! это работает. Большое спасибо! – Sakthisiga

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

Хотя этот фрагмент кода может решить проблему, он не объясняет, почему и как он отвечает на вопрос. Пожалуйста, [укажите объяснение своего кода] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers), так как это действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос читателей в будущем, и эти люди могут не знать причин вашего предложения кода. ** Флагеры/рецензенты: ** [Для ответов только на код, таких как этот, нисходящий, не удалять!] (// meta.stackoverflow.com/a/260413/2747593) –

+0

Это работает для меня, спасибо !! – Sakthisiga

0

Try ниже команд Grep для достижения выхода -

[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 

объяснение: \[ and \] для экранирования и -c6- печатать после 6-го символа до конца строки.

+0

Это тоже работает .. Спасибо! – Sakthisiga

Смежные вопросы