如何使用sort命令对大文件按指定列实现排序去重
Linux sort命令按第二列排序去重操作指南
核心执行逻辑
你需要对CSV格式的大文件按第二列去重,相同第二列的内容仅保留首次出现的行,具体操作如下:
基础操作命令
sort -t',' -k2,2 -u 输入文件.csv -o 输出结果.csv
参数说明
-t',':指定字段分隔符为英文逗号,匹配CSV文件的列拆分规则-k2,2:限定排序、去重的判断范围仅为第2列,避免第1、3列内容参与逻辑判断-u:去重标识,第二列取值相同的多行数据仅保留排序后出现的第一行-o 输出结果.csv:指定输出路径,禁止直接将结果重定向到原文件,避免数据丢失
600万行大文件优化方案
如果执行基础命令时出现内存不足、处理速度慢的问题,可以添加参数调整资源占用:
sort -t',' -k2,2 -u -S 4G --parallel=8 输入文件.csv -o 输出结果.csv
优化参数说明
-S 4G:设置排序缓冲区大小为4G,可根据服务器实际可用内存灵活调整,缓冲区越大排序速度越快--parallel=8:开启8线程并行排序,可根据CPU核心数调整,大幅提升大文件处理效率
效果验证
对你给出的示例输入执行上述命令后,第二列取值为000-00-0000的两行中会保留首次出现的CONT,000-00-0000,GRAM,删除后续的MICH,000-00-0000,EVINS,完全匹配你需要的输出结果。
内容的提问来源于stack exchange,提问作者jose marte
相关产品推荐
相关产品推荐

