.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전달 된 파일이어느빈 줄을 긋고 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.

관련 정보