У меня есть текстовый файл, который содержит эту строку:
set stime = '0 0'
Я должен изменить это на:
set stime = '0 4'
Я попробовал эти команды:
sed -i 's/original/new/g' file.txt
и
awk '{gsub(/pattern/,"replacement")}' file
но они не работают. Я предполагаю, что это из-за апострофа в шаблоне. Как я могу сделать это правильно?
Для выхода из одинарной кавычки '
, необходимо использовать двойные кавычки: "
.
для обновления оперативный, необходимо использовать sed -i
, следующий код должен обновить оперативный, и выйти из одинарной кавычки:
sed -i "s/set stime = '0 0'/set stime = '0 4'/g" input_file_name
У Вас есть несколько вариантов:
двойные кавычки Использования вместо одинарных кавычек для sed или команд awk:
sed -i "s/set stime = '0 0'/set stime = '0 4'/g" file
или
awk "{gsub(/set stime = '0 0'/,\"set stime = '0 4'\")}1;" file
Сохраняют шаблон в переменной оболочки и используют двойные кавычки:
replacement="set stime = '0 4'"
pattern="set stime = '0 0'"
затем
sed "s/$pattern/$replacement/g" file
или
awk -vpat="$pattern" -vrep="$replacement" '{gsub(pat,rep)}1;' file
не используют весь шаблон. Просто найдите правильную строку и замените только что потребности быть измененными, избежав кавычки. Например, если у Вас только есть одно возникновение set stime
, можно сделать:
sed '/set stime/{s/0 0/0 4/}' file
или
awk '$1=="set" && $2=="time"{sub("0 0","0 4")}1' file