gpt4 book ai didi

linux - Bash:从 CSV 中一次循环读取 N 行

转载 作者:行者123 更新时间:2023-12-03 09:57:35 25 4
gpt4 key购买 nike

我有一个 100000 个 ID 的 csv 文件

wef7efwe1fwe8
wef7efwe1fwe3
ewefwefwfwgrwergrgr
正在使用 jq 转换为 json 对象
output=$(jq -Rsn '
{"id":
[inputs
| . / "\n"
| (.[] | select(length > 0) | . / ";") as $input
| $input[0]]}
' <$FILE)
输出
{
"id": [
"wef7efwe1fwe8",
"wef7efwe1fwe3",
....
]
}
目前,我需要手动将文件拆分为更小的 10000 行文件......因为 API 调用有限制。
我想要一种自动循环遍历大文件的方法...并且只使用 10000 行作为 $FILE... 直到列表末尾。

最佳答案

我会使用 split命令并围绕它编写一个小shell脚本:

#!/bin/bash
input_file=ids.txt
temp_dir=splits
api_limit=10000

# Make sure that there are no leftovers from previous runs
rm -rf "${temp_dir}"
# Create temporary folder for splitting the file
mkdir "${temp_dir}"
# Split the input file based on the api limit
split --lines "${api_limit}" "${input_file}" "${temp_dir}/"

# Iterate through splits and make an api call per split
for split in "${temp_dir}"/* ; do
jq -Rsn '
{"id":
[inputs
| . / "\n"
| (.[] | select(length > 0) | . / ";") as $input
| $input[0]]
}' "${split}" > api_payload.json

# now do something ...
# curl -dapi_payload.json http://...

rm -f api_payload.json
done

# Clean up
rm -rf "${temp_dir}"

关于linux - Bash:从 CSV 中一次循环读取 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63649672/

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