Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Код на AWK для поиска старых объявлений конструкторов PHP5  (Прочитано 937 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Т.е. нужно искать по регулярке:
Код: (Text) [Выделить]
/\s*class\s([^\s]*)И далее искать найденное:
Код: (Text) [Выделить]
/$className::$className\(
Без замены, только выводить строку объявления класса и строку объявления конструктора.

А то сейчас вручную поисправлял классы PhpPgAdmin, где Апач сыпал в лог ошибки:
Код: (Bash) [Выделить]
find -type f -mtime -1
/usr/share/phppgadmin/classes/database/Connection.php
/usr/share/phppgadmin/classes/database/Postgres.php
/usr/share/phppgadmin/classes/database/ADODB_base.php
/usr/share/phppgadmin/classes/Misc.php
/usr/share/phppgadmin/classes/Gui.php
/usr/share/phppgadmin/classes/ArrayRecordSet.php
Что-то мало  :)
« Последнее редактирование: 17 Января 2017, 11:43:21 от Azure »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
Что-то мало понятно, и причем здесь awk?
« Последнее редактирование: 16 Января 2017, 16:07:35 от renzrv »

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
AWK работает с блоками текста
Наружным блоком тут является class
Внутренними функции-члены, одна из которых будет конструктор

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Dexel, не перенимайте дурные привычки. Напишите исходный текст и что именно Вы с ним планируете сделать, потому что угадывать что у Вас «осталось в голове» довольно бесперспективное занятие
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн Dexel

  • Автор темы
  • Активист
  • *
  • Сообщений: 295
    • Просмотр профиля
Azure, есть директория.
В ней много скриптов .php
Некоторые с них обработаны, некоторые нет.
Нужно показать в необработанных объявление класса и объявление конструктора.
Образец необработанного
Там где function -это конструктор, его объявление нужно показать

Образец обработанного

Нужно вывести во всех скриптах объявление необработанных конструкторов
и/или объявление его класса (желательно)

Вариант 2.
Выводить названия файлов, содержащих строку class\s[0-9a-Z_]+
но не содержащих __construct
Здесь наверное AWK не нужен, только через grep не представляю как
« Последнее редактирование: 18 Января 2017, 01:01:29 от Dexel »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2648
    • Просмотр профиля
примерно так:
Код: (bash) [Выделить]
grep -rozP 'class\s+(\S+)\s+{[[:space:]]+[^}]+?\Kfunction\s+\1\s+[^{]*{'
« Последнее редактирование: 18 Января 2017, 01:39:07 от renzrv »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Спасибо за предоставление кода фотографией (Как Вы предлагаете проверить работу скрипта? Вручную набирать?)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

 

Страница сгенерирована за 0.033 секунд. Запросов: 25.