0
我有一個文件,ids_list.csv
,包含一個id列表,每行一個。如果找不到文件和輸出模式的grep
我也有一個日誌文件,其中我想從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行,日誌文件包含700K行)?
編輯:樣品輸入:
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
Wrt速度,請改用awk。 – 123
一些樣本輸入和預期輸出會更有幫助。 – serenesat
用於逐行讀取文件,更好地使用'read line;做...;完成
Fiximan