我想使用文件“input_loan_msisdn.txt”中的电话号码列表(很多)作为我的脚本的输入(文件中的电话号码逐行列出),并使用它作为关键字来 grep 我的输出另一个文件 yemmy_snap*
输入文件示例:
2348093700000
2348180000000
2348090000000
2348097000000
2347050000000
2348090000000
2348170000000
请参阅下面我的尝试:
#!/bin/bash
for msisdn in $(cat input_loan_msisdn.txt); do
cd /onip/cdr/output/snapshot/yemmy/backup
zgrep $msisdn yemmy_snap* | \
awk -F "|" '{print $1 " " $14 " " $4 }' ocs_snapshot*.unl \
> /onip/app/cbpapp/RETURN_LOAN/output_loan_msisdn.txt;
done
答案1
循环while
是不必要的,因为grep
有-f
开关:
grep -f input_loan_msisdn.txt yemmy_snap* | <do other stuff with the data>
请注意,如果传递给的文件-f
有任何空行 it it,grep
匹配每一个线,(它的作用类似于cat
)。假设传递给的文件-f
无法提前编辑,则可以在运行时修复它,如下所示:
grep '.' input_loan_msisdn.txt | \
grep -f - yemmy_snap* | <do other stuff with the data>
从man grep
:
-f FILE, --file=FILE
Obtain patterns from FILE, one per line. If this option is used
multiple times or is combined with the -e (--regexp) option,
search for all patterns given. The empty file contains zero
patterns, and therefore matches nothing.