从 .txt 文件读取多个输入

从 .txt 文件读取多个输入

我想使用文件“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.

相关内容