Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell Grep忽略多行_Shell_Grep - Fatal编程技术网

Shell Grep忽略多行

Shell Grep忽略多行,shell,grep,Shell,Grep,Grep有没有办法使用-v开关来忽略一行及其后的下一行数。它基本上是从日志文件中过滤异常,即 Valid log entry 1 Exception exceptionname at a.b.c at d.e.f ... Valid log entry 2 grep it制作: Valid log entry 1 Valid log entry 2 我尝试了grep-v异常-a2 但这不起作用 如果您有任何想法,我们将不胜感激。在您的情况下,您可以告诉grep也忽略任

Grep有没有办法使用-v开关来忽略一行及其后的下一行数。它基本上是从日志文件中过滤异常,即

Valid log entry 1
Exception exceptionname
    at a.b.c
    at d.e.f
    ...
Valid log entry 2
grep it制作:

Valid log entry 1
Valid log entry 2
我尝试了
grep-v异常-a2

但这不起作用


如果您有任何想法,我们将不胜感激。

在您的情况下,您可以告诉
grep
也忽略任何包含前导空格的行:

grep -v 'Exception|^\s'
试试awk:

awk -v nlines=2 '/^Exception/ {for (i=0; i<nlines; i++) {getline}; next} 1'
awk-v nlines=2'/^Exception/{for(i=0;i
sed-n'/^Exception/,+2!p'文件名

在glenn jackman的基础上,通过管道传输一些命令,您可以获得before/after行为:

awk -v nlines_after=5 '/EXCEPTION/ {for (i=0; i<nlines_after; i++) {getline};print "EXCEPTION" ;next} 1' filename.txt|\
tac|\
awk -v nlines_before=1 '/EXCEPTION/ {for (i=0; i<nlines_before; i++) {getline}; next} 1'|\
tac

awk-v nlines_after=5'/EXCEPTION/{for(i=0;-v并没有颠倒-A,只是与这个简单的例子相匹配,似乎更容易找到你想要的,而不是消除你不想要的:
grep Valid
——注意,在sed中打印前一行比打印后一行更难,因为你需要使用保持缓冲区,这里有一些关于@无用的信息
awk -v nlines_after=5 '/EXCEPTION/ {for (i=0; i<nlines_after; i++) {getline};print "EXCEPTION" ;next} 1' filename.txt|\
tac|\
awk -v nlines_before=1 '/EXCEPTION/ {for (i=0; i<nlines_before; i++) {getline}; next} 1'|\
tac