[英]Bash - Count how often a line appears
文件 A 是我必须搜索的文件。 文件 B 是文件,其中包含我需要在文件 A 中搜索的内容。
文件 A 是很多代码,类似这样:
test test
a = rr
b = gg
test test
c = a + b
test
这些变量有时只声明而不使用,我将所有需要的变量过滤到文件 B 中:
a
b
我想计算每个变量(文件 B 中的每个变量都有自己的行,并且是一个字符串)在文件 B 中出现的频率。
我会在Excel
中使用count if
来实现这一点,但我不知道如何在 Bash 中做一些类似的事情。
我尝试使用grep -wc File_B File_A
但这对我不起作用,我猜是因为这个尝试在 File_A 中找到完整的 File_B,但这不起作用。
任何帮助将不胜感激。
亲切的问候
埃利亚斯
命令grep -wc File_B File_A
实际上在文件File_A
中搜索单词File_B
。
您可能想要的是grep -wcf File_B File_A
- -f
的意思是“不要搜索模式File_B
,而是读取要从File_B
搜索的模式。
问题是,它将计算在 File_A 中找到的来自File_B
的所有匹配File_A
并为您求和,所以如果File_B
第一行上的模式被找到 8 次,并且File_B
第二行上的模式被找到 4时间, grep -wcf
只会打印 12。如果您想要一个输出列出每个模式被找到的次数,您需要编写一个循环,从File_B
和grep
中分别读取每一行。
也许是这样的:
while read pat; do echo -n "$pat: "; grep -wc "$pat" File_A; done < File_B
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.