简体   繁体   English

Shell中的Grep从特定字符串中提取一行

[英]Grep in Shell to extract a line from specific string

I have a file with below text 我有以下文字的文件

^[[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 ^ [[8mha:AAAAYB + LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0 + vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ + TqucMoUEKGSCAEaSwAACsNFCqYAAAAA == ^ [[0米[ERROR] ^ [[8mha:AAAAYB + LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0 + vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ + TqucMoUEKGSCAEaSwAACsNFCqYAAAAA == ^ [[0米[ERROR] /opt/app/ElectronicTransactionVOtoDOMapper.java :[1060,1]错误:到达文件结束而解析^ [[8mha:AAAAYB + LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0 + vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ + TqucMoUEKGSCAEaSwAACsNFCqYAAAAA == ^ [[0米[ERROR] - > [帮助1] ^ [[8mha:AAAAYB + LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0 + vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ + TqucMoUEKGSCAEaSwAACsNFCqYAAAAA == ^ [[0分[错误] ^ [8mha:AAAAYB + LCAAAAAAAAP9b85aBtbiIQSmjNKU4P0 + vJLE4u1gvPjexLDVPzxdEuhYV5Rf55ZekOlc7RKnPKH7IxMBQUcQgBdWQnJ9XnJ + TqucMoUEKGSCAEaSwAACsNFCqYAAAAA == ^ [[0分[错误]要查看错误的完整堆栈跟踪,与重新运行Maven - 开关

from the above log, I have to extract only the below: 从上面的日志中,我只需要提取以下内容:

[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

Eventually, I should not get the Junk value in the log instead I need a clear Error message. 最终,我不应该在日志中获取垃圾值,而是需要明确的错误消息。

Could you please help me in getting the right command in shell? 您能帮我在Shell中获得正确的命令吗?

probably should use sed rather than grep here. 可能应该在这里使用sed而不是grep。

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

gets only lines containing the word 'ERROR' and strips everything from the left of the '[ERROR]' and prints the rest. 仅获取包含单词“ ERROR”的行,并从“ [ERROR]”的左侧剥离所有内容,然后打印其余部分。

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

Try below grep command to achieve the output - 试试下面的grep命令来实现输出-

vipin@kali:~$ 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

explanation : \\[ and \\] for escaping and -c6- to print after 6th character till end of line. 说明: \\[ and \\]用于转义, -c6-在第6个字符后打印直至行尾。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM