我有一个包含 10K 条记录的文件,我需要将其分为 8 个文件。我用了split -n l/8 -d file1 file2
。这会将文件分成 8 个文件,但我需要根据文件中的数据/记录将文件分成 8 个。
例如,
case $1
in
"P"|"D") no_lines=$(wc -l $NAS_LAND/$infile | cut -d ' ' -f1 )
#no of lines in the each file after split
split_count=`expr $no_lines / 10`
if [ $split_count -ge 1 ]
then
#Input file has more than or equal to 8 lines
echo "lines_per_instance=$split_count"
split -n l/8 -d $NAS_LAND/$infile $MY_WORK/CCN_split_files/$infile
else
cp $NAS_LAND/$infile $MY_WORK/CCN_split_files/ccn.email.list.file00
fi
esac
在上面的代码中,我尝试计算记录总数,如果大于 1,则In-file
进行除法,则分割文件,否则不分割。split_count=expr $no_lines / 10
现在,如果我的文件内包含 1000 条记录,则文件分为 8 个文件,每个文件有 125 条记录。如果我更改split_count=expr $no_lines / 10
为split_count=expr $no_lines / 100
,它将分为 8 个文件,每个文件中有相同的 125 条记录。我期望当我将数字更改为100
(例如1000/10=100
)时,我期望 8 个文件中的每个文件中有 100 条记录。我哪里错了。 In-file 必须分为 8 个文件,但 8 个文件中的记录必须根据 Dividor 的不同而不同。