[英]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.