레코드 수에 따라 파일을 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개의 레코드가 있을 것으로 예상됩니다 . 내가 어디로 잘못 갔나요? In-file은 8개의 파일로 나누어져야 하며, 8개 파일의 기록은 Divider에 따라 달라야 합니다.

관련 정보