grepは複数の文字列を見つけましたが、リスト内の各文字列の最初の項目だけを印刷します。

grepは複数の文字列を見つけましたが、リスト内の各文字列の最初の項目だけを印刷します。
zgrep -f /onip/appt/app/yemi/usage_biglist.txt \
    /onip/cdr/output/nor/bac/filec/$count/nordat.gz \
    >> /onip/appt/app/yemi/have_usage.txt

一般化する

  1. ファイルの最初の文字列を選択します。usage_biglist.txt
  2. ファイルでgrepを実行しnordat.gz、結果を次の場所に保存します。have_usage.txt
  3. 次の文字列を選択usage_biglist.txtし、n番目の文字列まで同じことを行います。

ベストアンサー1

grep(またはzgrepあなたの場合)は、常にファイル内の一致するすべての行を出力します。

各パターンマッチングを個別に実行し、結果を渡すことができますhead -n 1

while read -r pattern; do
    zgrep "$pattern" file.gz | head -n 1
done <pattern_list.txt >output_file.txt

あなたの場合:

while read -r pattern; do
    zgrep "$pattern" /onip/cdr/output/nor/bac/filec/$count/nordat.gz | head -n 1
done </onip/appt/app/yemi/usage_biglist.txt >/onip/appt/app/yemi/have_usage.txt

おすすめ記事