Задать вопрос
erohin_d
@erohin_d
DevOps в ЛАНИТ

Как заменить строку на новую через bash?

Есть file
В нем текст:
"server" => [
{
"port" => "2200",
"ntf_port" => "22000",
"ip" => "10.10.10.10",
'role' => 'Client',
'cluster' => 'Cluster',
'ntf_sync' => true,
}


Надо после строки 'cluster' => 'Cluster', вставить "version" => '1.0' желательно в новой строке.

Основная проблема, что sed которым пробовал это сделать не хочет воспринимать эту кучу кавычек в тексте файла.

Есть предложения, как сделать?
  • Вопрос задан
  • 2364 просмотра
Подписаться 1 Оценить 1 комментарий
Ответ пользователя Zaur Abdulgalimov К ответам на вопрос (5)
abdulgalimov
@abdulgalimov
file=`cat file`
echo "------- file -------"
echo "$file"

template="'cluster' => 'Cluster',"
replaceTo="$template\\
'version' => '1.0'"

result=`echo "$file" | sed 's/'"$template"'/'"$replaceTo"'/g'`

echo "------- result -------"
echo "$result"


Результат выполнения:
------- file -------
"server" => [
{
"port" => "2200",
"ntf_port" => "22000",
"ip" => "10.10.10.10",
'role' => 'Client',
'cluster' => 'Cluster',
'ntf_sync' => true,
}
------- result -------
"server" => [
{
"port" => "2200",
"ntf_port" => "22000",
"ip" => "10.10.10.10",
'role' => 'Client',
'cluster' => 'Cluster',
'version' => '1.0',
'ntf_sync' => true,
}
Ответ написан
Комментировать