The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Нужно закомментировать блок теста"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Нужно закомментировать блок теста"  +/
Сообщение от universite (ok), 04-Окт-18, 19:35 
Здравствуйте.

Есть текстовый конфиг, в середине которого есть такой блок


/var/log/lastlog {
    monthly
    rotate 1
}

Как бы его закомментировать символом # в начале строки. Спасибо.

P.S. OS FreeBSD 11.2 или Debian 8.x.

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Нужно закомментировать блок теста"  +/
Сообщение от михалыч (ok), 05-Окт-18, 17:16 
> Здравствуйте.
> Есть текстовый конфиг, в середине которого есть такой блок
>
 
> /var/log/lastlog {
>     monthly
>     rotate 1
> }
>

> Как бы его закомментировать символом # в начале строки. Спасибо.
> P.S. OS FreeBSD 11.2 или Debian 8.x.

Пожалуйста.

perl -00pe 's|\A(/var/log/lastlog\s+{\n)(\s+monthly\n)(\s+rotate\s+1\n)(})|#$1#$2#$3#$4|' file

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Нужно закомментировать блок теста"  +/
Сообщение от Pahanivo (ok), 05-Окт-18, 20:23 

>
perl -00pe 's|\A(/var/log/lastlog\s+{\n)(\s+monthly\n)(\s+rotate\s+1\n)(})|#$1#$2#$3#$4|' 

\s* в начале и конце строки весьма не помешает
также неплохо снабдить все сивмолы новой строки внутри { } знаком ? ибо не факт что там везде новая строка

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Нужно закомментировать блок теста"  +/
Сообщение от universite (ok), 05-Окт-18, 21:03 
>>
perl -00pe 's|\A(/var/log/lastlog\s+{\n)(\s+monthly\n)(\s+rotate\s+1\n)(})|#$1#$2#$3#$4|' 
> \s* в начале и конце строки весьма не помешает
> также неплохо снабдить все сивмолы новой строки внутри { } знаком ?
> ибо не факт что там везде новая строка

Понял.
Пошел писать регулярку на sed'e.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "Нужно закомментировать блок теста"  +/
Сообщение от Pahanivo (ok), 06-Окт-18, 00:05 
> Пошел писать регулярку на sed'e.

полуношный извращенец - тебе же перловку сваренную дали ))

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Нужно закомментировать блок теста"  +/
Сообщение от universite (ok), 06-Окт-18, 15:03 
>> Пошел писать регулярку на sed'e.
> полуношный извращенец - тебе же перловку сваренную дали ))

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

последняя моя попытка была на :


perl -i -00pe 's|\A(\s*/var/log/lastlog\s+{\n)(\s*\s+monthly\s*\n)(\s*\s+rotate\s*\s+1\n)(\s*}\s*)|#$1#$2#$3#$4|' logrotate.conf

Плюс в синтаксисе Perl непонятно как разбивать выражение по строкам, чтоб добиться бОльшей читабельности...

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "Нужно закомментировать блок теста"  +/
Сообщение от михалыч (ok), 07-Окт-18, 11:26 
>>> Пошел писать регулярку на sed'e.
>> полуношный извращенец - тебе же перловку сваренную дали ))
> Только когда для тестов добавляешь пробелы и табуляторы в начале и конце
> строк этого блока конфига, регулярка сдувается...
> последняя моя попытка была на :
>
 
> perl -i -00pe 's|\A(\s*/var/log/lastlog\s+{\n)(\s*\s+monthly\s*\n)(\s*\s+rotate\s*\s+1\n)(\s*}\s*)|#$1#$2#$3#$4|'
> logrotate.conf
>

выше подсказали - использовать \s*

perl -00pe 's|\A(\s*/var/log/lastlog\s*{\s*\n)(\s*monthly\s*\n)(\s*rotate\s+1\s*\n)(\s*}\s*)|#$1#$2#$3#$4|' logrotate.conf


> Плюс в синтаксисе Perl непонятно как разбивать выражение по строкам, чтоб добиться
> бОльшей читабельности...

нужно закомментить весь блок или какие-то выборочные строки?

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "Нужно закомментировать блок теста"  +/
Сообщение от Pahanivo (ok), 08-Окт-18, 10:12 
В перле можно сварить весьма крутые, и в тоже время весьма простые регексы. Но! Нужно точно знать может быть на входе с возможными вариантами. От этого и плясать.

У мну свой чистильщик/парсер конфигов апача где то валяется. Я там делал немного по другому. Я сначала приводил конфиг к некоторому общему виду (удалении пустых строк и коментов, склеивание многострочных разбивок директив, удалении трейлинг/лединг пробелов, приклеивание инклудов  и тд). На выходе у меня получался конфиг в заложенном МНОЙ гарантированном стандарте. А далее для парсинга использовал примитивнейшие правила, ибо четко знал что на входе. Получилось в итоге два разработчика в конвейере - но они оба простые и понятные.

И еще. Многи кто начинает работать с регулярками делают одну существенную ошибку - смотрят на регулярки как на шаблоны поиска, что в корне не верно. Регулярки это суть макрос для настройки алгоритма поиска.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Нужно закомментировать блок теста"  +/
Сообщение от михалыч (ok), 08-Окт-18, 15:33 
> В перле можно сварить весьма крутые, и в тоже время весьма простые
> регексы. Но! Нужно точно знать может быть на входе с возможными
> вариантами. От этого и плясать.

Да.

> У мну свой чистильщик/парсер конфигов апача где то валяется. Я там делал
> немного по другому. Я сначала приводил конфиг к некоторому общему виду
> (удалении пустых строк и коментов, склеивание многострочных разбивок директив, удалении
> трейлинг/лединг пробелов, приклеивание инклудов  и тд). На выходе у меня
> получался конфиг в заложенном МНОЙ гарантированном стандарте. А далее для парсинга
> использовал примитивнейшие правила, ибо четко знал что на входе. Получилось в
> итоге два разработчика в конвейере - но они оба простые и
> понятные.

своя рука - владыка
кому как ни себе лучше знать, что имеем и что хотим получить

> И еще. Многи кто начинает работать с регулярками делают одну существенную ошибку
> - смотрят на регулярки как на шаблоны поиска, что в корне
> не верно. Регулярки это суть макрос для настройки алгоритма поиска.

и ещё раз - да! ))

однако, сдаётся мне, что всё это хорошо было бы адресовать тому,
который ни много ни мало называет себя вселенной

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Нужно закомментировать блок теста"  +/
Сообщение от Pahanivo (ok), 08-Окт-18, 17:17 
> своя рука - владыка
> кому как ни себе лучше знать, что имеем и что хотим получить

Тут дело в разных подходах, а не в конкретных руках.

> однако, сдаётся мне, что всё это хорошо было бы адресовать тому,
> который ни много ни мало называет себя вселенной

ну дак ему и адресовано
кхе кхе его ник как бы не тянет совсем на вселенную )) а даже скорее наоборот если правильно перевести

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Нужно закомментировать блок теста"  +/
Сообщение от universite (ok), 14-Окт-18, 22:55 
> однако, сдаётся мне, что всё это хорошо было бы адресовать тому,
> который ни много ни мало называет себя вселенной

Вселенная - universe.
Так что не надо мне приписывать манию величия.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

11. "Нужно закомментировать блок теста"  +/
Сообщение от universite (ok), 14-Окт-18, 22:56 

> нужно закомментить весь блок или какие-то выборочные строки?

Этот конкретный блок.
Но я расширил и добавил варианты форматирования, в разных сборках ядра линукса по-разному форматируют конфиги.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor