Поиск и замена всех файлов на сервере - PullRequest
0 голосов
/ 27 января 2020

Я хочу найти эту строку:

<script type="text/javascript" src="//example.com/file.php?zoneid=112" async data-cfasync="false"></script>

И удалить ее / заменить пустым.

Какую командную строку можно запустить на linux для поиска и замены этого термина на всех файлах на сервере?

Ответы [ 2 ]

2 голосов
/ 27 января 2020

Я использовал комбинацию grep и sed

string_to_replace='<script type="text/javascript" src="//example.com/file.php?zoneid=112" async data-cfasync="false"></script>'

Сначала просто запустите оператор grep, чтобы убедиться, что вы соответствуете правильной строке и файлу. Если все выглядит хорошо, выполните следующую команду:

grep -Inr "${string_to_replace}" | while read line; do filename=`echo $line | cut -d ":" -f 1`; line_no=`echo $line | cut -d ":" -f 2`; sed "${line_no}d" -i $filename; done

В grep, -I будут игнорировать двоичные файлы, -n выведет номер строки и -r выполнит рекурсивный поиск.

Дайте мне знать, если что-то не работает.

1 голос
/ 27 января 2020

Вы можете использовать sed с regex и командой d над file:

sed -i '/regex/d' file

Следующая конструкция может помочь вам передать имена файлов с find в sed:

find . | xargs sed -i '/regex/d'

Будьте осторожны с отладкой. :)

...