Решено: Удаление комментариев C++ style комменнтариев из файла (sed regexp)

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Аватара пользователя
trancefer
Сообщения: 485
Статус: $>
ОС: Arch, Slackware, OpenBSD

Решено: Удаление комментариев C++ style комменнтариев из файла

Сообщение trancefer »

Собственно есть файл (PHP) из которого необходимо удалить комментарии (//).
Делается элементарно с помощью sed, если бы не одно но: в файле встречаются последовательности
вида "http://..." которые при таком простом подходе разрушаются.

Вопрос, как объяснить sed, чтобы он игнорировал последовательности "http://" и обрабатывал только "//".
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Решено: Удаление комментариев C++ style комменнтариев из файла

Сообщение drBatty »

trancefer писал(а):
16.10.2013 10:56
Вопрос, как объяснить sed, чтобы он игнорировал последовательности "http://" и обрабатывал только "//".

1. заменить

на что-то другое (например на http:\r\r)
2. заменить //
3. заменить обратно п1.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
trancefer
Сообщения: 485
Статус: $>
ОС: Arch, Slackware, OpenBSD

Re: Решено: Удаление комментариев C++ style комменнтариев из файла

Сообщение trancefer »

Решение банальное, но рабочее. Думалось, что это можно сделать как-то изящнее.
Спасибо сказали:
NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: Решено: Удаление комментариев C++ style комменнтариев из файла

Сообщение NickLion »

trancefer писал(а):
16.10.2013 11:30
Решение банальное, но рабочее. Думалось, что это можно сделать как-то изящнее.

Изящнее (и в целом, более корректно) можно, но придётся парсить язык (php ведь open source, или поискать для bison), выделять именно комментарии, а не строки, чтобы в них не реагировать на //. Но если в вашем случае это только строки вида http://, то зачем привлекать тяжёлую технику.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current
Контактная информация:

Re: Решено: Удаление комментариев C++ style комменнтариев из файла

Сообщение drBatty »

trancefer писал(а):
16.10.2013 11:30
Думалось, что это можно сделать как-то изящнее.

что-то вроде

$

echo "aaa//aaa//aac//xxx//aaa"|\ sed -r 'h;:l1;s~[^/]*(.)(//)(.*)~\1\2\3~;T;/^a/{s/...//;bl1;};s/.//;G;s/(.*)\n(.*)\1$/\2/' aaa//aaa//aac


вроде удаляет что-то типа //..... если перед // стоит НЕ "a".
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ответить