Однако поведение во время выполнения довольно плохо, так как [114245]\w*[114246] может иметь почти неограниченную длину. Она может быть ограничена [114247]\w{,8}[114248], но это также проверяет и за пределами слова, ограниченного 10 буквами. Поэтому следующий шаблон сначала проверяет правильную длину слова:
В качестве тестового файла я использовал большой ≈ файл 500 MB:
Первый шаблон: ≈ 43 с
Поздний шаблон: ≈ 15 с
Обновление:
set selection=exclusive
set virtualedit+=onemore
" this is just a crude proof of concept with theoretically addressable weak points
nnoremap vd <Nop>
noremap p P
noremap a i
" make i<Esc> not move the cursor
inoremap <Esc> <Right><Esc>
Я не смог найти существенного изменения в поведении во время выполнения для не жадного оператора ([114255]\w*?[114256]) или опоссузионного оператора ([114257](...){10}+[114258]). Немного быстрее кажется, что замена опции [114259]-w[114260]:
Обновление grep из версии 2.13 в 2.18 оказалось гораздо эффективнее. Тестовый файл взял только ≈ 6 с.[113746].
Вы должны сделать так:
[ -n "${url%%*.txt}" ] &&
echo "\$url is not null and does not end with the string '.txt'"
Правильным оператором неравенства является !=
. Смотрите ниже:
url=/heads/paths/lol.txt
if [[ $url != *.txt ]] ; then echo "does not contain txt"; else echo "contains txt"; fi
Это дает:
contains txt