суббота, 28 апреля 2012 г.

Cygwin: grep взбунтовался?

Интересные вещи творятся в GNU grep 2.5.4. С мест сообщают - grep -o - тормозит как неизвестно что.


Поэтому надо писать так:


gawk '{match($0, "REGEXP") ; if (RSTART) print substr($0, RSTART, RLENGTH);}'


А желающие могут сравнить:

#!/bin/sh
for x in {1..10000} ; do echo {a..z} @where=gdetotam@ {a..z}{a..z} ; done > tmp.txt
export LC_ALL=C
time cat tmp.txt | grep -o "@where=[^@]\+@" > /dev/null #медленно, 2 секунды
time cat tmp.txt | grep "@where=[^@]\+@" > /dev/null #быстро, 0.1 секунды
time cat tmp.txt | awk '{match($0, "@where=[^@]+[@]") ; if (RSTART) print substr($0, RSTART, RLENGTH);}' > /dev/null
На моём Cygwin с grep 2.5.1 - всё ОК.

Комментариев нет:

Отправить комментарий