singalen: (Default)
[personal profile] singalen
Вот типа поиск:
gfind . -name "*.php*" | xargs grep --files-with-matches --extended-regexp '(@)?(shell_)?exec'
Теперь надо добавить в начало регэкса пробел или табуляцию, а в конец - {0,1} пробелов и открывающую круглую скобку.

Вопрос: какого органа не работает отэто?
gfind . -name "*.php*" | xargs grep --files-with-matches --extended-regexp '[\t ](@)?(shell_)?exec'
gfind . -name "*.php*" | xargs grep --files-with-matches --extended-regexp '(@)?(shell_)?exec ?\('

Пробовал цитировать бэкслэшем пробелы, кавычки, квадратные и круглые скобки... фиг там.

(no subject)

9/8/08 21:15 (UTC)
Posted by [identity profile] muwlgr.livejournal.com
\t только Си понимает. В регекспах вводи табуляцию как таковую (в шелле через Ctrl-V или в текстовом редакторе).
man 7 regex - наш общий друг :>

(no subject)

9/8/08 21:35 (UTC)
Posted by [identity profile] http://users.livejournal.com/_adept_/
Шелл тут как бы даже рядом не стоял.

Что за греп и какой версии?
У меня GNU grep 2.5.3 прекрасно ест оба варианта, которые в посте числятся как неработающие, и действительно по ним находит то, что нужно

Да, и \t он тоже замечательно понимает.

(no subject)

10/8/08 04:54 (UTC)
Posted by [identity profile] muwlgr.livejournal.com
Ты уж выбери, к какому лагерю примкнуть - либо к POSIX, либо к GNU(Linux,Cygwin).
Если решил выбрать GNU, так не застревай на старых версиях.
Испытывать на себе их недостатки - это пустая трата времени и сил :>

(no subject)

12/8/08 06:00 (UTC)
Posted by [identity profile] muwlgr.livejournal.com
Конфликта нет. Просто POSIX описывает минимальный уровень требований, который типа все должны соблюдать. Потому некоторые вводят политику - не выходить за пределы POSIXa. Чтоб работало везде. POSIX - это более-менее стройная теория.

И наоборот, GNU предлагает в своих реализациях одноимённых POSIX-утилит много вкусных расширений и дополнений, и от версии к версии их набор только растёт. Но если у тебя традиционная система типа AIX/HP-UX/Solaris, обычно тебе приходится втаскивать на неё GNUшные утильки снаружи и прописывать их в PATH, чтоб перекрыть стандартные. GNU - это как бы практика. GNUшные утилиты весьма портабельны, их всегда можно забесплатно обновить до последней версии, но просто традиционные коммерческие unix-вендоры не включают их в свой комплект поставки по умолчанию.

Потому и приходится выбирать один из двух путей.