Я новичок в использовании команды sed, и у меня есть SQL-файл, содержащий «MONYY», и я хочу изменить «MONYY» в файле, автоматически заменив его на текущий «MONYY».
Я использовал следующую команду и смог получить предыдущий месяц и год, а также текущий месяц и год в верхнем регистре. Теперь я пытаюсь заменить значения в своем скрипте с помощью команды sed, но ничего не происходит.
date1=$ date +"%b%y"|sed 's/\(.*\)/\U\1/'
echo $date1
date2=$ date -d ' -1 month ' +"%b%y"|sed 's/\(.*\)/\U\1/'
echo $date2
sed 's/$date1/$date2/g' aggdom.sql > temp
Может ли кто-нибудь помочь мне с командой sed, которую я использую?
решение1
Скрипт выше заменит каждый $date1
на$date2
но результат будет напечатан в temp
файле
Если вы хотите изменить строки вaggdom.sql
вам нужно изменить строку на что-то вроде этого:
sed -i 's/$date1/$date2/g' aggdom.sql
из sed
страницы руководства:
-i[СУФФИКС], --in-place[=СУФФИКС]
edit files in place (makes backup if extension supplied). The default operation mode is to break symbolic and hard links. This can be changed with --follow-symlinks and --copy.
в некоторых операционных системах вам придется добавить -e
в качестве опции:
sed -i -e s/$date1/$date2/g aggdom.sql