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