Я ищу безопасный и надежный способ перезаписи ОДНОЙ строки в текстовом файле. Мне все равно, использует ли он sed, grep, perl. Это просто должно быть портативным и надежным. В частности, я пытаюсь заменить значение переменной, которую я сохранил в текстовом файле во время выполнения. Допустим, у меня есть файл с именем variables.txt, который содержит строку со значением userName = stephen. Допустим, моя программа хочет изменить имя пользователя на откровенное. Вот что я придумал, используя sed:
sed -i '' 's/userName.*/userName=frank/' variables.txt
Меня беспокоит то, что я читал, что в некоторых версиях sed использование ключа -i без указания файла резервной копии может привести к сбою команды или риску повреждения файла. Не вариант. Что, вы парни, думаете? Любые предложения будут ценны.
- редактировать -
Для тех, кто спрашивает, где я читал о сбое команды и повреждении файла. На странице руководства для моей версии sed не рекомендуется указывать пустое значение для ключа -i, а также посмотрите комментарии на этой странице здесь:"Кажется, что некоторые версии sed требуют аргумента после -i и другие не делают. В GNU sed версии 4.1.x кажется, что -i не требует аргумента и указывает пустой аргумент после его сбоя. "
Звучит так, будто единодушной рекомендацией является предоставить файл bkup, а затем удалить его после завершения команды. Однако я все еще обеспокоен этим решением, так как моя версия sed даже не поддерживает ключ --version. Моя главная задача заключается в том, чтобы решение было надежным и портативным. Еще раз спасибо.