|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64361.8351 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
12.12.2011, 19:13
|
#1
|
Senior Member
Регистрация: 01.02.2011
Сообщений: 729
Бабло: $191845
|
Поиск-замена кода в файлах, Linux
Нужно найти кусок <?php ...?> в файлах и заменить его на другой код <?php ...?> или пустую строку. Подскажите команду.
|
|
|
12.12.2011, 23:23
|
#2
|
Senior Member
Регистрация: 29.04.2010
Сообщений: 439
Бабло: $76039
|
дак вариантов вроде масса, какие уже пробовал?
на память вот помню парочку
1) sudo apt-get install rpl ( клевая тулза, сам юзаю )
2) man sed
|
|
|
13.12.2011, 00:09
|
#3
|
Добрых дел мастер
Регистрация: 05.12.2009
Адрес: Tibet
Сообщений: 972
Бабло: $145785
|
Опять доры пиздят
Сам использую grep если что-то небольшое, или если php-скрипт посложнее - preg_replace. Ну и всё это + регулярные выражения.
Примеров куча в интернете, разобраться несложно.
|
|
|
13.12.2011, 00:16
|
#4
|
Добрых дел мастер
Регистрация: 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.
|
|
|
13.12.2011, 07:23
|
#5
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
тут нужен парсер php: - либо регекспы: grep, sed, awk и тд, либо скриптовые языки: php, perl и тд
- либо строковые функции на скриптовых языках: php, perl и тд
|
|
|
13.12.2011, 07:36
|
#6
|
Senior Member
Регистрация: 01.02.2011
Сообщений: 729
Бабло: $191845
ТС -->
|
ТС
Цитата:
Сообщение от Boddhisatva
А вообще ладно, кэп спешит на помощь:
Только если будешь регулярку использовать, нужно использовать preg_replace вместо str_rplace.
|
Спасибо кэп, но у меня такой скрипт уже есть. Думал может кто консольный вариант подкинет, я же и написал что нужна команда
|
|
|
|