Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/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
Linux awk与两个不匹配的行之间的模式未命中的条件_Linux_Ubuntu_Unix_Awk - Fatal编程技术网

Linux awk与两个不匹配的行之间的模式未命中的条件

Linux awk与两个不匹配的行之间的模式未命中的条件,linux,ubuntu,unix,awk,Linux,Ubuntu,Unix,Awk,输入文件: 2020-09-24 12:08:18,085.085 INFO 38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Benchmarking Data function ENDED 2020-09-24 12:08:18,085.085 INFO 38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep -

输入文件:

    2020-09-24 12:08:18,085.085 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Benchmarking Data function ENDED
    2020-09-24 12:08:18,085.085 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep -                                                      
    Average_Unit_Price_00         0.000000         Average_Unit_Price
    Competition_Media_00          0.000000          Competition_Media
    2020-09-24 12:08:18,229.229 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Configure JSON function ENDED
    2020-09-24 12:08:18,302.302 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Writing into CSV STARTED
    2020-09-24 11:44:03,070.070 ERROR    38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Traceback (most recent call last):
      File "/usr/local/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2646, in get_loc
        return self._engine.get_loc(key)
      File "pandas/_libs/hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
    KeyError: None
    2020-09-24 12:08:18,503.503 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - *************Data Prep Step ENDED*****************
    2020-09-25 07:39:09,008.008 INFO     8ccaf8d81212 LWpHmfMDcu03xp5 J0ps4NHADvsyIFt model2 - model2 Time: 0:00:03.281901 
    2020-09-25 07:39:09,008.008 INFO     8ccaf8d81212 LWpHmfMDcu03xp5 J0ps4NHADvsyIFt model2 -
    2020-09-25 07:39:09,010.010 INFO     8ccaf8d81212 LWpHmfMDcu03xp5 J0ps4NHADvsyIFt model2 - Generating CModel_Meas_Agg STARTED
    2020-09-25 07:39:09,019.019 INFO     8ccaf8d81212 LWpHmfMDcu03xp5 J0ps4NHADvsyIFt model2 - CModel_Meas_All file has 21 observations
命令:

awk '/38210f97f184/&&/94rXXKaa3KLamiJ/' Input_File
预期结果:

    2020-09-24 12:08:18,085.085 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Benchmarking Data function ENDED
    2020-09-24 12:08:18,085.085 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep -                                                      
    Average_Unit_Price_00         0.000000         Average_Unit_Price
    Competition_Media_00          0.000000          Competition_Media
    2020-09-24 12:08:18,229.229 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Configure JSON function ENDED
    2020-09-24 12:08:18,302.302 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Writing into CSV STARTED
    2020-09-24 11:44:03,070.070 ERROR    38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - Traceback (most recent call last):
      File "/usr/local/lib/python3.7/site-packages/pandas/core/indexes/base.py", line 2646, in get_loc
        return self._engine.get_loc(key)
      File "pandas/_libs/hashtable_class_helper.pxi", line 1626, in pandas._libs.hashtable.PyObjectHashTable.get_item
    KeyError: None
2020-09-24 12:08:18,503.503 INFO     38210f97f184 lCpkydbL6wlNNi0 94rXXKaa3KLamiJ prep - *************Data Prep Step ENDED*****************

您可以使用此
awk
解决方案:

awk '!/^[0-9]{4}(-[0-9]{2}){2} / && p;
/^[0-9]{4}(-[0-9]{2}){2} / && p = (/38210f97f184/ && /94rXXKaa3KLamiJ/)' file
编辑:由于OP的样本已更改,因此现在添加此解决方案

awk '
FNR==NR{
  if($0~/38210f97f184.*94rXXKaa3KLamiJ/ && ++count==1){
    start=FNR
  }
  if($0~/38210f97f184.*94rXXKaa3KLamiJ/ && count>1){
    end=FNR
  }
  next
}
FNR>=start && FNR<=end
'  Input_file  Input_file
或使用GNU
awk

awk '
FNR==NR{
  if($0~/38210f97f184 .* 94rXXKaa3KLamiJ/ || $0~ /94rXXKaa3KLamiJ .* 38210f97f184/){
    found=1
    nextfile
  }
}
!found{
  exit
}
1
' Input_file  Input_file

说明:读取输入文件两次。第一次检查是否找到任何一种模式,然后将变量设置为
1
。在第二次输入文件读取中,只需检查是否未设置“查找”,然后退出,否则将打印整个输入文件。

添加您的预期输出。欢迎使用SO,感谢您的努力。你能说清楚你要哪一行吗?您的
awk
命令正在检查包含
38210f97f184
94rXXKaa3KLamiJ
的行,它们应该打印包含这两个行的行,那么有什么不起作用请告诉我们。@RavinderSingh13是,我确实需要有38210f97f184和94rXXKaa3KLamiJ的行,甚至在匹配的行之间patterns@90是的,好的,但你的预期产出样本不清楚,请修复它,然后让我们知道。因此,即使在一行中发现一个模式,您也要输出完整的输入文件吗?我建议使用
nextfile
来加速@RavinderSingh13。感谢您的努力和时间,我能够按预期获得结果。再次感谢您,先生。@anubhava,您好,先生,我想OP需要从
38210f97f184.-94rXXKaa3KLamiJ
行到最后一行
38210f97f184.-94rXXKaa3KLamiJ
,如果我在这里理解错误,请告诉我。@90's_jaddu,您能确认我的上述评论是否正确吗(关于我对这个问题的思考)?说得好。在我看来,OP有一个日志文件要解析,其中每个日志语句都可以是多行的(例如Java日志中的堆栈跟踪)OP想要打印完整的日志语句,其中第一行匹配
/38210f97f184/&&/94rXXKaa3KLamiJ/
,它也会返回包含其他未匹配模式的整个文件。我还有其他模式,如{2020-09-24 12:08:18066.066 INFO 2136438776lowdnjgdihwi 875jerbkfkdlshdfli prep-基准数据函数启动}即使这些与模式不匹配的行也会作为结果出现,但我只需要这些匹配模式之间的数据。直到行尾存在相同的匹配模式。编辑此问题,希望您能在实际输入文件和发布的预期结果中找出差异,谢谢先生
awk '
FNR==NR{
  if($0~/38210f97f184 .* 94rXXKaa3KLamiJ/ || $0~ /94rXXKaa3KLamiJ .* 38210f97f184/){
    found=1
    nextfile
  }
}
!found{
  exit
}
1
' Input_file  Input_file