sed を使用してスクリプト内の文字列を置換する

sed を使用してスクリプト内の文字列を置換する

私は sed コマンドの使用経験が浅く、"MONYY" を含む sql があり、ファイル内の "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 

sedmanページより:

-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

関連情報