Замена строки в скрипте с помощью sed

Замена строки в скрипте с помощью sed

Я новичок в использовании команды 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

Связанный контент