gpt4 book ai didi

linux - 根据 bash 中的第一列将一个大的 CSV 文件分成较小的文件

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:16 25 4
gpt4 key购买 nike

我有几个包含如下信息的大型 CSV 文件(每个大约 20 MiB)。我想找到一种方法,根据第一列中的日期将此文件分成较小的文件。例如:下面的片段会被分成2个文件,分别是20130719.csv20130720.csv

我还想根据第 4 列(颜色标签)进行排序(在每个较小的文件中)。有没有人对我如何做到这一点有任何建议?

在处理这些类型的东西时,我应该学习哪些东西?

19/07/2013  19:14:24:523    6.35099E+17 Dr_Blue 10.42496014 27.17010689 0.685520172
19/07/2013 19:18:5:903 6.35099E+17 Dr_Yellow 11.09363079 28.57788467 2.010284424
19/07/2013 19:36:33:645 6.35099E+17 Dr_Blue 10.77513885 28.3723774 1.897870064
19/07/2013 21:29:36:762 6.35099E+17 Dr_Yellow 10.64018059 28.56962967 1.117245913
19/07/2013 21:29:37:627 6.35099E+17 Dr_Yellow 11.3354435 27.57170868 1.552354813
20/07/2013 2:34:28:2 6.35099E+17 Dr_Yellow 10.41067123 26.84050369 0.919301987
20/07/2013 2:34:28:840 6.35099E+17 Dr_Yellow 10.54369164 27.17712402 0.573934555
20/07/2013 2:34:33:192 6.35099E+17 Dr_Yellow 10.98471832 28.35677719 1.497600555
20/07/2013 4:20:28:246 6.35099E+17 Dr_Blue 10.92816448 28.55761147 2.187088013

最佳答案

这是一个简化的 shell 版本

IFS="$IFS/"
while read DAY MO YR A B C D E F || [ "$DAY" ]; do
echo "$A $B $C $D $E $F" >> "$YR$MO$DAY.ssv"
done <infile

for x in *.ssv; do
sort -k4 $x |tr " " "," > ${x%.ssv}.csv
rm $x
done

对于动态排序,awk 可能是更好的选择,具体取决于行的排序方式

关于linux - 根据 bash 中的第一列将一个大的 CSV 文件分成较小的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19126795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com