История изменений
Исправление mky, (текущая версия) :
Индекс ассоциативного массива, ведь, это не просто список строк, там для быстрого поиска хеш. Было, что начиная с какого-то размера ассоциативного массива, что добавление, что поиск по индексу становились очень медленными. Не знаю, что там именно было — ошибка в исходном коде, слишком маленький размер хеша...
где было много длиннющих строк
Ну, here doс и here string — это ведь создание временного файла.
Ну, можете ещё скорость такого кода посмотреть:
file=$1
mapfile -t list < <(grep -v '^$' $file)
N=${#list[*]}
for ((i=N-1;i>0;i--)); do
l=${list[i]}
[ -z "$l" ] && continue
for ((j=0;j<i;j++)); do
[ "$l" = "${list[j]}" ] && list[j]=
done
done
for ((i=0;i<N;i++)); do
[ -n "${list[j]}" ] && printf '%s\n'
done
Исходная версия mky, :
Индекс ассоциативного массива, ведь, это не просто список строк, там для быстрого поиска хеш. Было, что начиная с какого-то размера ассоциативного массива, что добавление, что поиск по индексу становились очень медленными. Не знаю, что там именно было — ошибка в исходном коде, слишком маленький размер хеша...
где было много длиннющих строк
Ну, here doс и here string — это ведь создание временного файла.
Ну, можете ещё скорость такого кода посмотреть:
file=$1
mapfile -t list < <(grep -v '^$' $file)
N=${#list[*]}
for ((i=N-1;i>0;i--)); do
l=${list[i]}
for ((j=0;j<i;j++)); do
[ "$l" = "${list[j]}" ] && list[j]=
done
done
for ((i=0;i<N;i++)); do
[ -n "${list[j]}" ] && printf '%s\n'
done