Jam*_*ing 128
使用Linux split命令:
split -l 20 file.txt new
Run Code Online (Sandbox Code Playgroud)
将文件"file.txt"拆分为以"new"开头的文件,每个文件包含20行文本.
man split在Unix提示符下键入以获取更多信息.但是,您必须首先从file.txt中删除标头(tail例如,使用该命令),然后将其重新添加到每个拆分文件中.
Mar*_*nov 69
这有效:
splitCsv() {
HEADER=$(head -1 $1)
if [ -n "$2" ]; then
CHUNK=$2
else
CHUNK=1000
fi
tail -n +2 $1 | split -l $CHUNK - $1_split_
for i in $1_split_*; do
echo -e "$HEADER\n$(cat $i)" > $i
done
}
Run Code Online (Sandbox Code Playgroud)
发现于:http://edmondscommerce.github.io/linux/linux-split-file-eg-csv-and-keep-header-row.html
Tim*_*son 17
One-liner 保留每个拆分文件中的标题行。此示例为每个文件提供 999 行数据和一个标题行。
cat bigFile.csv | parallel --header : --pipe -N999 'cat >file_{#}.csv'
Run Code Online (Sandbox Code Playgroud)
/sf/answers/3714357601/其中答案有关于安装正确版本的并行的评论(在 ubuntu 中使用特定的并行包,它比 moreutils 中捆绑的包更新)
Mar*_*ell 13
这应该为你做 - 你的所有文件最终将被称为Part1-Part500.
#!/bin/bash
FILENAME=10000.csv
HDR=$(head -1 $FILENAME) # Pick up CSV header line to apply to each file
split -l 20 $FILENAME xyz # Split the file into chunks of 20 lines each
n=1
for f in xyz* # Go through all newly created chunks
do
echo $HDR > Part${n} # Write out header to new file called "Part(n)"
cat $f >> Part${n} # Add in the 20 lines from the "split" command
rm $f # Remove temporary file
((n++)) # Increment name of output part
done
Run Code Online (Sandbox Code Playgroud)
Cor*_*ral 13
这应该工作!!!
file_name=要拆分的文件的名称.
10000=每个拆分文件将包含的行数
file_part_=拆分文件名的前缀(file_part_0,file_part_1,file_part_2..etc继续)
split -d -l 10000 file_name.csv file_part_
| 归档时间: |
|
| 查看次数: |
75177 次 |
| 最近记录: |