根据记录数将一个文件分成8个文件

根据记录数将一个文件分成8个文件

我有一个包含 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 / 10split_count=expr $no_lines / 100,它将分为 8 个文件,每个文件中有相同的 125 条记录。我期望当我将数字更改为100(例如1000/10=100)时,我期望 8 个文件中的每个文件中有 100 条记录。我哪里错了。 In-file 必须分为 8 个文件,但 8 个文件中的记录必须根据 Dividor 的不同而不同。

相关内容