sed: Как заменить переменную строку, если она найдена, или добавить в конец файла, если она не найдена?
Так что мой вопрос в значительной степени основан на связанном вопросе, но имеет одно ключевое отличие.
В ответе дано:
sed '/^FOOBAR=/;$;x}' infile
Я сделал вариант, который работает для того, чтобы сделать FOOBAR переменной (например, имя программы, а затем поместить ее в цикл for, чтобы составить список программ и их статус установки). Это довольно сложный проект, над которым я работаю, чтобы упростить установку Drawile для Raspberry Pi с некоторыми новыми функциями, но это другая червя, в которую я не буду вдаваться .
sed -i '/^'"$FOOBAR"'=/;$;x}' infile
Я хотел бы, чтобы newvalue был переменной $, которая может измениться в скрипте. Я просто не могу понять, как заставить это работать, просто используя «и» делает это неправильно. Я провел часы, просматривая и пытаясь прочитать учебные пособия, но я просто не понимаю достаточно и глубоко погрузился в это. во внутреннюю работу sed. Большую часть времени эта переменная будет выглядеть так: да, нет или ошибка. Однако я также могу использовать ее для представления путей к папкам и файлам ... поэтому я беспокоюсь о / здесь также есть и замены. Даже если это не полный ответ, я с удовольствием пойму это сам, если смогу указать направление, в котором мне нужно лучше понять это.
Изменить: не так много, чтобы опубликовать, учитывая, что есть что-то фундаментальное, я уверен, что мне не хватает, я только что попробовал варианты размещения кавычек вокруг нового значения. Такие, как следует ...
sed -i '/^FOOBAR=/;$;x}' infile
Вывод: FOOBAR = $ newvalue Это неверно. Должен вывести сохраненное значение для нового значения!
sed -i '/^FOOBAR=/;$;x}' infile
Вывод: FOOBAR = "$ newvalue" Это неверно. Должен вывести сохраненное значение для нового значения!
sed -i '/^FOOBAR=/;$;x}' infile
Вывод: sed: -e выражение # 1, char 30: неизвестная опция для `s '
Если newvalue равно Yes, то я бы хотел, чтобы вывод был «FOOBAR = Yes» или, возможно, путь к папке.
Изменить 2: Это может быть что угодно, на самом деле, при условии, что это просто работает. Я не особо разбираюсь в этом, но у меня, наверное, больше всего опыта с использованием sed, так что это то, на что я продолжаю смотреть ...
Изменить 3: нашел ответ.
sed -i '\!^'"$FOOBAR"'=!;$;x}' /home/pi/Public/test.txt
0 ответов на вопрос
Похожие вопросы
-
9
В чем разница между командами "su -s" и "sudo -s"?
-
4
Требуется хороший бесплатный образ Ubuntu Server VMWare
-
4
Каковы различия между основными дистрибутивами Linux? Я замечу?
-
-
2
Ограничить использование процессора для Flash в Firefox?
-
2
Как мне заставить мой микрофон работать под Debian GNOME?
-
2
Конки установки - образцы / идеи?
-
3
Каковы различия между оконными менеджерами Linux?
-
2
ThunderBird / Синхронизация освещения с SE k770i
-
4
Файловая система Linux
-
6
Полноэкранная медленная вспышка в KDE 4