заменить строку сложного текста в нескольких файлах

У меня есть куча файлов с именем Linux в разных подпапках, где вся строка

 DSY_OS_Release=`lsb_release --short --id |sed 's/ //g'` 

необходимо заменить на

 DSY_OS_Release="RedHatEnterpriseWorkstation" 

Как я могу достичь этого, используя командную строку?

Я знаю, что это звучит как дублирующий вопрос, но я не мог найти ответа, который работает для моей довольно сложной строки.

One Solution collect form web for “заменить строку сложного текста в нескольких файлах”

Если вам не нужно соответствовать всей строке, просто используйте

 sed 's/^DSY_OS_Release=.*/DSY_OS_Release="RedHatEnterpriseWorkstation"/' 

В зависимости от вашей реализации sed вы можете использовать sed -i '...' file , или вам, возможно, придется перенаправить на новый файл и затем заменить оригинал.

Что касается того, как запустить это в наборе файлов: если все файлы соответствуют определенному шаблону, например *.config , тогда (при условии, что GNU sed ):

 find /some/path -type f -name '*.config' \ -exec sed -i '...as above...' {} \; 
  • извлечение определенной строки, поиск и замена или сохранение более длинной строки содержат извлеченное значение
  • Считайте строки с определенным целым числом в столбце
  • Удалите строки между двумя тегами (с некоторыми ограничениями)
  • ошибка при замене нескольких слов в строке с помощью sed
  • Как комментировать snmpmibd и snmpd в rc.tcpip в AIX с помощью sed?
  • Команда SED для форматирования текстового файла
  • Как удалить символ точки из строки без вызова sed или awk снова?
  • Удалите кусок строк в соответствии с порядковыми номерами
  • Сохраняйте только первую строку из каждой последовательности последовательных строк, соответствующих шаблону
  • Извлечь определенный текст из переменной в сценарии оболочки
  • sed для поиска нескольких слов и удаления этих строк
  • Есть ли способ обнаружить нулевые байты (␀, NUL, \ 0) в sed?
  • Linux и Unix - лучшая ОС в мире.