Собственно есть файл (PHP) из которого необходимо удалить комментарии (//).
Делается элементарно с помощью sed, если бы не одно но: в файле встречаются последовательности
вида "http://..." которые при таком простом подходе разрушаются.
Вопрос, как объяснить sed, чтобы он игнорировал последовательности "http://" и обрабатывал только "//".
Решено: Удаление комментариев C++ style комменнтариев из файла (sed regexp)
Модераторы: /dev/random, Модераторы разделов
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Решено: Удаление комментариев C++ style комменнтариев из файла
1. заменить
Код: Выделить всё
http://
на что-то другое (например на http:\r\r)
2. заменить //
3. заменить обратно п1.
Спасибо сказали:
Re: Решено: Удаление комментариев C++ style комменнтариев из файла
Решение банальное, но рабочее. Думалось, что это можно сделать как-то изящнее.
Re: Решено: Удаление комментариев C++ style комменнтариев из файла
Изящнее (и в целом, более корректно) можно, но придётся парсить язык (php ведь open source, или поискать для bison), выделять именно комментарии, а не строки, чтобы в них не реагировать на //. Но если в вашем случае это только строки вида http://, то зачем привлекать тяжёлую технику.
- drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
- Контактная информация:
Re: Решено: Удаление комментариев C++ style комменнтариев из файла
что-то вроде
$
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".