Найти / заменить различные строки в файле командой find / sed через bash - PullRequest
0 голосов
/ 05 февраля 2020

Я использую приведенную ниже команду, чтобы найти / заменить текст в файлах с именем, указанным в указанном пути.

Мне нужно использовать аналогичную команду для ряда строк в другом файле, в котором есть более 1000, поэтому я не могу их всех по отдельности.

find /var/www/html/files/ -name "file.php" -print | xargs sed -i 's/Find Text/Replace Text/g'

Вышеуказанные файлы находятся в папке /var/www/html/files/ (и в папках внутри), находит текст «Найти текст» и заменяет его на «Заменить». Текст '.

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

Альтернативы, на которые я мог бы обратить внимание, добавить строки кода в конце каждого файла ИЛИ просто скопировать новый файл в каждое место и перезаписать предыдущий.

Спасибо.

1 Ответ

0 голосов
/ 05 февраля 2020

Допустим, это мой файл:

$ cat change_version.py 
#!/usr/local/bin/python3

import json

obj=json.load(open('input.json'))
obj['version'] = "WHATEVER"
print(json.dumps(obj, indent="  ")) . <-- I want to replace this line

Тогда это будет делать:

cat change_version.py | sed $'s/print.*/morethan\\\noneline/g'
#!/usr/local/bin/python3

import json

obj=json.load(open('input.json'))
obj['version'] = "WHATEVER"
morethan
oneline

Дайте мне знать, работает ли он для вас.

...