LINUX.ORG.RU

История изменений

Исправление 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