ファイルから各行をgrepし、別のファイルでの出現をカウントする必要があります。2 つのテンプレート ファイルの内容は次のとおりです。
テンプレート_サービス:
CO_SERVICE_SVCID268435463;Main Service
CO_FT_NON_BESTOWED_SVCID268435464;Bestowed Service
CO_SFT_NON_BESTOWED_SVCID268435465;Non Bestowed Service
template1 (最初のファイル自体から作成) :
CO_SERVICE_SVCID268435463
CO_FT_NON_BESTOWED_SVCID268435464
CO_SFT_NON_BESTOWED_SVCID268435465
これには検索文字列 (つまり、それぞれの行) が含まれます。上記の3つの文字列のいずれかを含む1,00,000行以上の別のファイル(text3.txt)があります(template_serviceの内容も異なる場合があり、固定されていません)。
これは私が書いたコードです:
file="/somepath/etc/template_service.txt"
while IFS= read -r line
do
echo "$line" | cut -d';' -f1 >>template1.txt
echo "$line" | cut -d';' -f2 >>template2.txt
grep -c -f template1.txt text3.txt >>final_count.txt <--problematic statement showing incorrect count
done <"$file"
これにより、text3.txt のファイル 1 から各行の出現がカウントされ、結果が final_count.txt に出力されます。これは、出力を次のように示しています。
60000
120000
180000
しかし、出力は次のようになります。
60000
60000
60000
以前の合計も追加されるのはなぜですか?