开发者

Display a few lines before selected word

开发者 https://www.devze.com 2023-04-02 14:02 出处:网络
The following command is correctly returning all the lines with warnings more than 0 from all files. grep -i warning * | grep -v \'Warnings: 0\' | more

The following command is correctly returning all the lines with warnings more than 0 from all files.

grep -i warning * | grep -v 'Warnings: 0' | more

I want to see t开发者_JAVA百科he 4 lines above the warnings line where warning is more than 0. The -B4 switch does not work for obvious reasons.


If I understood your question correctly, here is a solution:

grep -v "Warnings: 0" * | grep -B4 -i warning


How about using a little regex instead:

grep -e "Warnings: [1-9][0-9]*" -B4 * | more

The grep should look for 1 or more warnings and print the previous 4 lines.


your are unclear if the warnings message should be include in the output or not. In this version it is.

Try:

awk -F"[: ]" '($1  /Warning/ && $2> 0){a[NR]=$0;for (i=4;i>=0;i--) \
            print a[NR-i]}{a[NR]=$0}' file

HTH Chris

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号