sed новые строки с \n как часть текста строки

Пытается написать новую команду sed, которая вставит новые строки перед другой строкой.

код, который я пробовал и терпит неудачу:

sudo sed -i '/# onlynet=ipv4/i echo "rpcallowip='$WebInternalIP'\n";\necho "rpcallowip='$DBInternalIP'\n";\necho "rpcallowip='$StratumInternalIP'\n";' $STORAGE_ROOT/yiimp/site/web/yaamp/modules/site/coin_form.php

Новые строки нужно читать:

echo "rpcallowip=$Variable\n"; example, echo "rpcallowip=127.0.0.1\n";

приведенный выше код дает следующий результат:

echo "rpcallowip=10.0.0.3
";

Таким образом, он видит \n как другую новую строку вместо части строки.

1 ответ

Решение

Как отмечено в руководстве по GNU Sed для i\text команда:

Последовательности Escape в тексте обрабатываются, поэтому вы должны использовать \ in text для печати одной обратной косой черты.

Следовательно, чтобы вставить буквальную последовательность \n, вам нужно будет использовать \\n

Другие вопросы по тегам