grep を使用して複数の文字列の発生回数を取得します。

grep を使用して複数の文字列の発生回数を取得します。

私の主なファイル(log1.txt)文字列は次のとおりです。

T202210010515.XX.old:2022-10-01 10:57:56<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:59:56<Other Texts>975673449<0ther Texts>975673449
T202210010515.XX.old:2022-10-01 10:57:58<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:59:51<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:57:52<Other Texts>975673849<0ther Texts>975673849
T202210010515.XX.old:2022-10-01 10:59:59<Other Texts>975673449<0ther Texts>975673449

各セットはT202210 *で始まります。その数をgrepし、その数が表示される行数を返す必要があります。検索する必要があるすべての数値を含む別の補助ファイル(numbers.txt)があります。これは私が必要とする出力、つまり数字と各数字の行数です。

975673849 -4
975673449 -2

これが私の試みです。

grep -f numbers.txt log1.txt

ただし、これにより、強調表示された数字を持つすべての文字列行が生成されます。誰かが私が実際に必要な結果を生み出すのを助けることができますか?

ベストアンサー1

それではうまくいきます。

╰─$ cat log1.txt                                                                                                                                                                                             130 ↵
T202210010515.XX.old:2022-10-01 10:57:56<Other Texts>975673849<0ther Texts>975673849
 T202210010515.XX.old:2022-10-01 10:58:56<Other Texts>975673849<0ther Texts>975673849
╰─$ cat numbers.txt 
975673849
975673449
╰─$ while read -r line; do echo "$line" && cat log1.txt | grep -c "$line"  ; done < numbers.txt
975673849
2
975673449
0

おすすめ記事