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

1

Выше скрипт заменит каждые $date1 с $date2

но результат будет напечатан во temp файле

Если вы хотите изменить строки в aggdom.sql

Вы должны изменить строку на что-то вроде этого:

sed -i 's/$date1/$date2/g' aggdom.sql 

со страницы sed :

-i [SUFFIX], --in-place [= SUFFIX]

         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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .