「sed」はテキストファイルの日付を現在の日付に置き換えます。

「sed」はテキストファイルの日付を現在の日付に置き換えます。

パラメータファイル(.txt)を呼び出そうとし、ジョブがトリガされると、アプリケーションは動的値を読み取ります。値の1つは次のとおりです。

abc.txt
------------------
Code:
line1
line2
line3
$$EDWS_DATE_INSERT=08-27-2019
line4
$$EDWS_PREV_DATE_INSERT=08-26-2019

この日付を毎日現在の日付に更新する単純なコマンドを作成しようとしていますが、日付値を変更しません。
パスワード:

sed -i 's/$$EDWS_DATE_INSERT =.*/$$EDWS_DATE_INSERT="$(date `+%y%m%d`)"/' abc.txt

現在の結果:

$$EDWS_DATE_INSERT="$(date `+%y%m%d`)"

誰でも助けることができますか?

ベストアンサー1

コマンドに追加のスペースがあります

sed -i 's/$$EDWS_DATE_INSERT<extra_space>=.*/$$EDWS_DATE_INSERT="$(date `+%y%m%d`)"/' abc.txt

私の考えであなたが探しているものは次のとおりです。

sed -i "s/\$\$EDWS_DATE_INSERT=.*/\$\$EDWS_DATE_INSERT=$(date '+%y%m%d')/" abc.txt

より良い点は次のとおりです。

sed -E -i "s/(\\\$\\\$EDWS_DATE_INSERT=).*/\1$(date '+%y%m%d')/" abc.txt

出力:

line1
line2
line3
$$EDWS_DATE_INSERT=190827
line4
$$EDWS_PREV_DATE_INSERT=08-26-2019

sed一重引用符を二重引用符に置き換えます。バックティックを一重引用符で置き換えます。

編集:私の前のコマンドは間違った。アップデートには固定コマンドを使用します。

おすすめ記事