我有一个文件A和B.
引用日志文件
我有一个像这样的awk程序:
echo "($(awk 'NR==1{r1=$1;next}
NR>2{printf"||"}
{printf"(NR>%d&&NR<%d)",r1,$1;r1=$1}' B))&&/mypattern/"|
awk -f- A
---> (courtesy jeff y from stack flow )
in this link you can find the requirement for which the above script is born
“|”之前的部分生成要在文件A中搜索的范围。
例如:(NR>385&&NR<537)||(NR>537&&NR<539)||(NR>539&&NR<547)|
这些是“|”之前部分可以生成的一些范围
我需要将“mypattern”匹配的范围存储在sep文件中,或者最后变量
比如说NR>385&&NR<537
- &gt;根据我的模式,文件A上的这个范围可能没有匹配,因为(NR>539&&NR<547
这可能有
所以任何想法都要检查是否发生了匹配,如果是,则将NR对应的NR值存储在文件的旁边。
答案 0 :(得分:0)
鉴于你在评论中的澄清,我建议一个解决方案只需要通过FILE_A一次通过awk,而不是尝试在多个通道中以数字方式提取和使用行号和范围(FILE_B):
awk '/Exception/ && !/ExceptionUnparseable date/ {
haveEx="yes"; ex=$0; exDate=last; haveMatch=""}
haveEx && /tms/ {
haveMatch="yes"; print exDate; print ex; haveEx=""}
haveMatch && /tms/ {print}
{last = $0} ' FILE_A
或者,如果您不需要查看与该模式匹配的行:
awk '/Exception/ && !/ExceptionUnparseable date/ {
haveEx="yes"; ex=$0; exDate=last}
haveEx && /tms/ {
print exDate; print ex; haveEx=""}
{last = $0} ' FILE_A