seq_no=1
for line in `cat temp1_other.txt`
do
pk=`echo "$line" | cut -d '|' -f41`
seq_no=`expr "$seq_no" + 1`
line1=`sed -n ''$seq_no'p' temp1_other.txt`
pk_next=`echo "$line1" | cut -d '|' -f41`
if [ "$pk" == "$pk_next" ]; then
echo $line >> exam_duplicate.txt
else
echo $line >> exam_non_duplicate.txt
fi
done
Попытка прочитать файл и сравнить столбец текущей строки и столбца следующей строки, чтобы проверить наличие дублирующихся записей, для файла 60k-70k это занимает более 20 минут, можем ли мы его оптимизировать или достичь с помощью другой логики. в то время как цикл также занимает больше времени. Записи отсортированы с помощью команды "sort".
Пример данных:
Sam|1|IT|1st_Sem
Sam|1|CS|1st_Sem
Sam|1|CS|2nd_Sem
Peter|2|IT|2nd_sem
Ron|2|ECE|3rd_sem
Предположим, что 2-й столбец является ключевым столбцом, если 2-й столбец совпадает со следующей строкой 2-го столбца, он должен перейти к дублирующему файлу, если не соответствует, то он должен перейти к неповторяющемуся файлу.
Sam|1|IT|1st_Sem
Sam|1|CS|1st_Sem
Peter|2|IT|2nd_sem
Должен перейти к дублирующему файлу и остаться без дубликатов.