bash - 如何在使用 bash 维护标题和文件扩展名的同时将大型 CSV 文件拆分为小部分
问题描述
我正在使用下面的脚本使用 Bash 拆分一个大的 CSV 文件。文件被拆分并维护标题是每个输出文件。
csvheader=`head -1 largeFile.csv`
split -d -l500 largeFile.csv smallFile_split_
find .|grep smallFile_split_ | xargs sed -i "1s/^/$csvheader\n/"
sed -i '1d' smallFile_split_t_00
但是,我还想在每个拆分部分维护 .csv 文件扩展名。
当前输出是 smallFile_split_00,而我希望它是 smallFile_split_00.csv
我试过使用split -l 500 -d .csv largeFile.csv file
,但似乎没有用。
如果您有任何想法,将不胜感激。
解决方案
拆分后重命名即可。
find
似乎是多余的;你只想
for file in smallFile_split_*; do
case $file in
smallFile_split_t_00)
cat "$file" ;;
*)
sed "1s/^/$csvheader\n/" "$file";;
esac >"$file.csv"
rm "$file"
done
除了在这里不必要之外,find
还将遍历任何子目录,在这种情况下显然您不需要。
推荐阅读
- c# - 3d 文本上的 transform.LookAt 正在向后显示文本
- java - java.sql.Date错误如何避免呢?将日期插入我的数据库
- python - 我在反向欧拉中遇到双标量溢出和双标量错误中遇到的无效值
- c++ - 使用另一个四元数旋转四元数旋转游戏对象时出现问题
- php - MySQL 是否(或如何)本机地处理并发事务?
- macos - 如何使用 Homebrew 通过 Vim 8 安装 Python 3 支持
- c - 二进制文件打印最后一个元素两次?
- java - 在 for 循环中使用带有 JavaFX 的时间线关键帧
- javascript - 事件委托无法与 if else 语句一起正常工作
- javascript - jQuery 动画延迟在 Chrome 中不起作用