gpt4 book ai didi

bash - 根据字段值将一个 CSV 拆分为多个文件

转载 作者:行者123 更新时间:2023-12-04 00:21:59 26 4
gpt4 key购买 nike

我确实有一个 CSV,看起来像这样*:

system,subject,value1,value2
example.org,thing 1,100,4
exmaple.org,thing 2,90,0
example.com,thing 1,200,0
example.com,thing 5,10,10

标题我们实际上不包括在内,但显示在这里是为了更容易阅读示例。

我想把它分成两个文件:

example.org.csv 包含:

thing 1,100,4
thing 2,90,0

example.com.csv 包含:

thing 1,200,0
thing 5,10,10

我目前的解决方案是这样工作的:

while read line; do
SYSTEM=$(echo "$line" | cut -d, -f1)
NOTTHESYSTEM=$(echo "$line" | cut -d, -f2-)
echo "${NOTTHESYSTEM}" >> "${SYSTEM}.csv"
done <$INPUT

但这工作效率非常低,并且在处理较大的文件时表现不佳。

在数字上,这意味着一个 52050 行/9 MB 的文件需要大约 250 秒才能完成拆分。

欢迎就如何改进上述脚本提出任何建议。

干杯

最佳答案

使用 awk 会更简单:

awk 'BEGIN{FS=OFS=","} {print $2, $3, $4 > $1 ".csv"}' "$INPUT"

验证:

cat example.org.csv
thing 1,100,4
thing 2,90,0

cat example.com.csv
thing 1,200,0
thing 5,10,10

关于bash - 根据字段值将一个 CSV 拆分为多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31500245/

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