レコード数に応じてファイルを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 / 10に変更すると、split_count=expr $no_lines / 100各ファイルに同じ125のレコードを含む8つのファイルに分割されます。数値を100(たとえば)に変更すると、1000/10=1008つのファイルのそれぞれに100のレコードがあると予想されます。私はどこに間違って行きましたか?インファイルは8つのファイルに分けられ、8つのファイルの記録はDividerによって異なります。

ベストアンサー1

おすすめ記事