У меня есть текстовый файл, который содержит эту строку:
set stime = '0 0'
Мне нужно изменить это на:
set stime = '0 4'
Я пробовал эти команды:
[ f3]и
awk '{gsub(/pattern/,"replacement")}' file
, но они не работают. Я думаю, это из-за апострофа в шаблоне. Как я могу сделать это правильно?
У вас есть несколько вариантов:
Используйте двойные кавычки вместо одиночных кавычек для команд 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
Сохраните шаблон в переменной оболочки и используйте двойные кавычки: [ f3], затем 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