[英]Grep from a file and output pattern if not found
我有一个文件ids_list.csv
,其中包含一个ID列表,每行一个。
我还有一个日志文件,我想在其中找到ids_list.txt
的id。
我想要的是将日志文件中的行(如果找到该模式)打印到result.txt
文件,否则将其打印。
所以我写了这个脚本:
#!/bin/bash
for i in `cat ids_list.csv`;
do
echo $i
echo `grep $i log_FVAScope`
if [[ ! res=$(grep $i log_FVAScope) ]]; then
echo $i >> result.txt;
else
echo $res >> result.txt
fi
done
但是, result.txt
为空,我在做什么错?
而且它似乎很慢,我如何加快速度( ids_list.csv
包含约40k行,日志文件包含70万行)?
编辑:样本输入:
ids_list.csv
:
KBKEQO17564
SPXTCT769178
KBKFXS1952894
CDNEVL_4148105
BBR10000130794156
日志文件 :
18:51:59.368 [pool-1-thread-4] INFO c.s.m.x.liqor.filter.CodChainFilter - KBKEQO17564 excluded by CodeChain Filter
18:51:59.369 [pool-1-thread-5] INFO c.s.m.x.liqor.filter.CodChainFilter - KBKFXS1952894 excluded by CodeChain Filter
18:51:59.369 [main] INFO c.s.m.x.l.manager.FilterManagerImpl - waiting new deals to submit
18:51:59.369 [pool-1-thread-2] INFO c.s.m.x.liqor.filter.CodChainFilter - CDNEVL_4148105 excluded by CodeChain Filter
18:51:59.369 [pool-1-thread-1] INFO c.s.m.x.liqor.filter.CodChainFilter - BBR10000130794156 excluded by CodeChain Filter
所需的输出( result.txt
) :
18:51:59.368 [pool-1-thread-4] INFO c.s.m.x.liqor.filter.CodChainFilter - KBKEQO17564 excluded by CodeChain Filter
SPXTCT769178
18:51:59.369 [pool-1-thread-5] INFO c.s.m.x.liqor.filter.CodChainFilter - KBKFXS1952894 excluded by CodeChain Filter
18:51:59.369 [main] INFO c.s.m.x.l.manager.FilterManagerImpl - waiting new deals to submit
18:51:59.369 [pool-1-thread-2] INFO c.s.m.x.liqor.filter.CodChainFilter - CDNEVL_4148105 excluded by CodeChain Filter
18:51:59.369 [pool-1-thread-1] INFO c.s.m.x.liqor.filter.CodChainFilter - BBR10000130794156 excluded by CodeChain Filter
好吧,您实际上不需要脚本。 下面的命令可以满足您的需求。
while read line; do grep $line log_FVAScope >> result.txt ; done < ids_list.csv
我不知道性能问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.