Linux Shell 脚本分割CSV文件

将以下脚本保存为 split_csv.sh

然后执行 split_csv.sh data.csv 100

可以将 data.csv 按照每个文件 100 行数据,分割为多个小文件,命名格式为:

data_0000.csv
data_0001.csv
data_0002.csv
data_0003.csv
data_0004.csv
...

脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/bash

# split_csv.sh data.csv 10000

file_path=$1
line_number=$2

# /a/b.c.d => file_name: /a/b.c file_ext: .d
file_name=${file_path%.*}
file_ext="."${file_path##*.}

filter_cmd='sh -c "{ head -n1 '${file_path}'; cat; } > $FILE"'
echo $filter_cmd
tail -n +2 $file_path | split -d -l $line_number -a 4 --additional-suffix $file_ext --filter="$filter_cmd" - ${file_name}_