вопрос по регэкспам (perl-овским)

Модератор: Модераторы разделов

Аватара пользователя
JaGoTerr
Сообщения: 380

вопрос по регэкспам

Сообщение JaGoTerr »

Господа. Нужна помощь. Вот есть такой регэксп:

Код: Выделить всё

grep -P '^\s*\#?\s*\w+\=.+$' file

под который должны попадать строки вида:

Код: Выделить всё

param=value
# param=value
  #  param=value # may be something else

и т.д. И всё бы ничего. Но! Почему под этот регэксп попадают строки вида

(где после # ещё могут быть пробельные символы)? И как это пофиксить?

ЗЫ: В качестве примера файла можно взять конфиг icewm ;)

JaGoTerr добавил в 09.06.2005 14:28

ЗЗЫ: В ruby этот регэксп работает как надо :dntknw:
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: вопрос по регэкспам

Сообщение madskull »

Во-первых,
$ grep -P '^\s*\#\s*\w+\=.+$' file
grep: The -P option is not supported

Во-вторых, в перле этот регексп выведет только закомментированные строки # param=value

Если я правильно понял, надо вывести все параметры, в том числе и закомментированные?
$ perl -wne 'print if /^\s*#?\s*\w+\=.+$/' preferences
или
$ egrep '^\W*#?\W*\w+=' preferences
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: вопрос по регэкспам

Сообщение JaGoTerr »

(madskull @ Четверг, 09 Июня 2005, 13:53) писал(а):grep: The -P option is not supported


Тэкс... Интересное кино... А если так?

Код: Выделить всё

[~] grep --version
grep (GNU grep) 2.5


(madskull @ Четверг, 09 Июня 2005, 13:53) писал(а):Во-вторых, в перле этот регексп выведет только закомментированные строки # param=value

Если я правильно понял, надо вывести все параметры, в том числе и закомментированные?

Ну это да, правильно. Я ужо подправил. Там просто после \# надо было ? поставить, тогда в этом плане всё ОК, выводит незакомментированные.

В общем, сделал так:

Код: Выделить всё

ruby -ne 'puts $1 if ($_ =~ /^\s*\#?\s*(\w+)\=.+$/ )'



(madskull @ Четверг, 09 Июня 2005, 13:53) писал(а):или
$ egrep '^\W*#?\W*\w+=' preferences


Ну теоретически этот не совсем правильный. Строку вида

он пропустит. Хотя это и не так важно, ибо таковых там не встречается, но люблю идеальность :)))
В общем, осталось загадкой какого ж лысого не работает как надо мой первый вариант :(
Спасибо сказали:
Аватара пользователя
madskull
Сообщения: 1019
Статус: Экс-металлюга

Re: вопрос по регэкспам

Сообщение madskull »

$ grep --version
grep (GNU grep) 2.5.1
ArchLinux / IceWM
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: вопрос по регэкспам

Сообщение sash-kan »

(madskull @ Четверг, 09 Июня 2005, 13:53) писал(а):$ grep -P '^\s*\#\s*\w+\=.+$' file
grep: The -P option is not supported


аналогично
(madskull @ Четверг, 09 Июня 2005, 14:27) писал(а):$ grep --version
grep (GNU grep) 2.5.1


аналогично

!!! хотя в man grep опция -P таки присутствует (:
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
t.t
Бывший модератор
Сообщения: 7390
Статус: думающий о вечном
ОС: Debian, LMDE

Re: вопрос по регэкспам

Сообщение t.t »

Код: Выделить всё

t:~$ grep -P '^\s*;;\s*\w+\=.+$' src/1.lisp
grep: Ключ -P не поддерживается
t:~$ grep -V
grep (GNU grep) 2.5.1

Хм.. Что, 2.5 поддерживает, а 2.5.1 не поддерживает? Али как?
¡иɯʎdʞ ин ʞɐʞ 'ɐнɔɐdʞǝdu qнεиж
Спасибо сказали:
Аватара пользователя
JaGoTerr
Сообщения: 380

Re: вопрос по регэкспам

Сообщение JaGoTerr »

Ну видимо так. Хотя такого рода изменения в младшей версии... Ну фиг знает, чем думал человек, который их делал.
Спасибо сказали: