Поиск-замена кода в файлах, Linux - Форум успешных вебмастеров - GoFuckBiz.com
 
 
Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB93.4409
BTC/USD64361.8351
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 12.12.2011, 19:13   #1
chizer
Senior Member
 
Аватар для chizer
 
Регистрация: 01.02.2011
Сообщений: 729
Бабло: $191845
По умолчанию Поиск-замена кода в файлах, Linux

Нужно найти кусок <?php ...?> в файлах и заменить его на другой код <?php ...?> или пустую строку. Подскажите команду.
chizer вне форума  
Старый 12.12.2011, 23:23   #2
sqk
Senior Member
 
Аватар для sqk
 
Регистрация: 29.04.2010
Сообщений: 439
Бабло: $76039
По умолчанию

дак вариантов вроде масса, какие уже пробовал?
на память вот помню парочку
1) sudo apt-get install rpl ( клевая тулза, сам юзаю )
2) man sed
sqk вне форума  
Старый 13.12.2011, 00:09   #3
Boddhisatva
Добрых дел мастер
 
Аватар для Boddhisatva
 
Регистрация: 05.12.2009
Адрес: Tibet
Сообщений: 972
Бабло: $145785
По умолчанию

Опять доры пиздят

Сам использую grep если что-то небольшое, или если php-скрипт посложнее - preg_replace. Ну и всё это + регулярные выражения.

Примеров куча в интернете, разобраться несложно.
Boddhisatva вне форума  
Старый 13.12.2011, 00:16   #4
Boddhisatva
Добрых дел мастер
 
Аватар для Boddhisatva
 
Регистрация: 05.12.2009
Адрес: Tibet
Сообщений: 972
Бабло: $145785
По умолчанию

А вообще ладно, кэп спешит на помощь:
Цитата:
Код рекурсивной фукнции scan_dir(), которая обходит директории

PHP код:
<?php
  
////////////////////////////////////////////////////////// 
  // Рекурсивная функция - спускаемся вниз по каталогу 
  ////////////////////////////////////////////////////////// 
  
function scan_dir($dirname
  { 
    
// Объявляем переменные замены глобальными 
    
GLOBAL $text$retext
    
// Открываем текущую директорию 
    
$dir opendir($dirname); 
    
// Читаем в цикле директорию 
    
while (($file readdir($dir)) !== false
    { 
      
// Если файл обрабатываем его содержимое 
      
if($file != "." && $file != ".."
      { 
        
// Если имеем дело с файлом - производим в нём замену 
        
if(is_file($dirname."/".$file)) 
        { 
          
// Читаем содержимое файла 
          
$content file_get_contents($dirname."/".$file); 
          
// Осуществляем замену 
          
$content str_replace($text$retext$content); 
          
// Перезаписываем файл 
          
file_put_contents($dirname."/".$file,$content); 
        } 
        
// Если перед нами директория, вызываем рекурсивно 
        // функцию scan_dir 
        
if(is_dir($dirname."/".$file)) 
        { 
          echo 
$dirname."/".$file."<br>"
          
scan_dir($dirname."/".$file); 
        } 
      } 
    } 
    
// Закрываем директорию 
    
closedir($dir); 
  }
?>
Воспользоваться результатами можно при помощи следующего кода

Код вызова функции scan_dir()

PHP код:
<?php
  $text 
'$text'// Искомая строка
  
$retext '$retext'// Строка замены
  
$dirname "Имя корневой директории, например ."
  
scan_dir($dirname);  // Вызов рекурсивной функции
?>
Только если будешь регулярку использовать, нужно использовать preg_replace вместо str_rplace.
Boddhisatva вне форума  
Старый 13.12.2011, 07:23   #5
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
По умолчанию

тут нужен парсер php:
  • либо регекспы: grep, sed, awk и тд, либо скриптовые языки: php, perl и тд
  • либо строковые функции на скриптовых языках: php, perl и тд
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 13.12.2011, 07:36   #6
chizer
Senior Member
 
Аватар для chizer
 
Регистрация: 01.02.2011
Сообщений: 729
Бабло: $191845
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от Boddhisatva Посмотреть сообщение
А вообще ладно, кэп спешит на помощь:


Только если будешь регулярку использовать, нужно использовать preg_replace вместо str_rplace.
Спасибо кэп, но у меня такой скрипт уже есть. Думал может кто консольный вариант подкинет, я же и написал что нужна команда
chizer вне форума