Я пишу скрипт оболочки для редактирования Атрибуты для изменения атрибута. команды я использую:Использование переменной с sed в Shell Script
aegis -Change_Attributes -Edit
, который открывает редактор VI для выполнения из изменений. Я хочу, чтобы сделать поиск и заменить:
s/brief_description \= \"none\"\;/brief_description \=
\ «тест \»/г
Могу ли я передать их непосредственно к открытому VI например, через скрипт без ввода в любой из них? Я хочу сохранить документ (: wq) после его редактирования.
P.S. Файл представляет собой временный файл создается при выполнении команды так я не знаю, оригинальный путь
Edit: я мог бы использовал СЭД в этом случае:
sed -e 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\
\ "тест \ "\/г»
раствор (безвкусный хак ??) будет быть "кошка" на выходе из эгидой (SetEnv VISU AL кошка), изменить поток из пут вышеуказанной командой и сохранить его на временный файл, а также использование:
aegis -change_attributes -file <temp file>
EDIT2: Я почти получил его на работу. Но есть проблема с тем, как я использую sed
У меня есть следующие строки в моем сценарии:
sed -i 's/brief_description\ \=\ \"none\"\;/brief_description\ \=\ \"${DESC}\"\;/g' temp_next.txt
Но переменные $ DESC не оценивает его стоимость и вне положенном даются как:
brief_description = "$ {DESC}";
Как передать DESC в sed, чтобы он оценил его фактическое значение?
EDIT3:
Использование
sed -i 's%brief_description\ \=\ \"none\"\;%brief_description\ \=\ \"'"$DESC"'\"\;%g' temp_next.txt
работал. Я заменяю нормальный разделитель (/) на% и помещаю переменную окружения в двойные кавычки.
Если я использую кошку и изменять выходные с СЕПГ, будут изменения получить сохранялось в файл? – Gayan
Нет, вам нужно перенаправить вывод sed где-нибудь, в этом случае во временный файл. Затем, когда редактирование сделано, удалите оригинал и переименуйте временный. – 2009-04-21 11:03:21
Если вы используете GNU sed, вы можете использовать флаг -i для редактирования файла. – skoob