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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

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

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

Оффлайн Dexel

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

Без замены, только выводить строку объявления класса и строку объявления конструктора.

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

Оффлайн ReNzRv

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

Оффлайн Dexel

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

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6015
  • 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

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

Оффлайн Azure

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

 

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