如何通过Python/Unix单行命令实现大型数据文件转置
大文件数值数据单行转置实现方案
场景说明
待处理的数值大文件以空格作为列分隔符、换行作为行分隔符存储数据,原始格式示例:
1 2 3 4 5 6 7 8 9 10 ... N
需要通过单行命令完成处理,最终输出所有数值按原有顺序排列的单行空格分隔格式,目标结果示例:
1 2 3 4 ... N
可行实现方法
以下都是终端可直接执行的单行命令,均支持流式处理大文件,不会把整个文件全量加载进内存导致进程卡顿:
- 最高性能方案:
tr命令
处理GB级大文件速度最快,核心逻辑是直接把文件里的换行符替换为空格,命令如下:
如果原文件每行末尾自带多余空格,输出末尾会残留一个空格,需要清理的话可以追加sed处理:tr '\n' ' ' < 你的数据文件路径tr '\n' ' ' < 你的数据文件路径 | sed 's/ $//' - 最简写法方案:
xargs命令
代码长度最短,xargs默认会自动识别所有空白字符(换行、多空格、制表符)作为分隔符,直接输出拼合后的单行内容,不会残留末尾多余空格:xargs < 你的数据文件路径 - 高容错方案:
awk命令
对不规范分隔的兼容性最好,不管原文件是空格、制表符、空行混排都能正确提取数值,后续如果要叠加数值过滤、计算逻辑也方便扩展:awk '{for(i=1;i<=NF;i++) printf "%s ",$i}' 你的数据文件路径 | sed 's/ $//'
注:如果需要把结果写入新文件,直接在命令末尾加
> 输出文件路径即可,比如xargs < data.txt > res.txt
内容的提问来源于stack exchange,提问作者haswellrefresh
相关产品推荐
相关产品推荐

