使用 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

相关内容