技术与生活 / 一篇记录
重复内容统计:uniq 前面为什么常有 sort
uniq 判断的是相邻两行是否相同。输入顺序混乱时,相同内容可能分散出现,直接计数会得到多个小组,不能代表整个文件的频率。
uniq 只合并相邻重复行,统计前通常需要先排序。
实际怎么检查
以下示例面向常见 GNU/Linux 环境,文件名为实验用占位名称。
printf 'b\na\nb\n' | sort | uniq -c
示例中 a 出现一次,b 出现两次。
遇到异常再检查什么
先用三行小样本确定输出口径,再把命令用于真实数据。大小写、空白和语言环境会影响分组;需要合并这些差异时,应先明确规范化规则。
频次结果需要再排序时,应使用数值口径而不是纯字符串口径。先保留原始输入,另存规范化后的样本,便于解释大小写或空白处理是否改变了原本应当独立的项目。
字符串排序受语言环境影响,自动化处理宜明确排序规则。
参考:Linux 文档。