我有一个包含 6500 行和 2 列的数据文件:
1ES9 0.927536231884058
1ET1 1.0
1EU1 0.8915343915343915
... ... ...
我想计算文件中 1.0 的出现次数。
我使用了以下grep
命令,输出为 1001:
grep -o '1.0' data_file.txt | wc -l
然后,我在 Windows 10 下执行了 Notepad++ 的Find->Count
工具。它给出了 144。
为什么与 不同grep
?
grep
默认使用正则表达式,“1.0”是匹配“1”后跟任意字符后跟“0”的正则表达式。在您的示例中,该行将产生“1 0”的匹配。
要准确计算“1.0”的出现次数,您应该要求
grep
搜索固定字符串:或“转义”句点,使其匹配句点:
如果您只想将 1.0 计为值,而不是子字符串(例如在“11.002”中),您应该要求
grep
只匹配单词:您也不需要参与
wc
,因为您只对每行一场比赛感兴趣,并且grep
可以计算行数:这仍然匹配“-1.0”,因为“-”是一个非单词字符;如果这是一个问题,您可以扩展模式并停止寻找单词:
或者使用AWK之类的工具来匹配数值:
(添加 0 强制
$2
被解释为数字)。