ラインをawk / sedに置き換えますが、ラインの一部だけを知っています

ラインをawk / sedに置き換えますが、ラインの一部だけを知っています

依存関係を追加せずにシェルスクリプトでアクションを実行したいので、awk / sedに頼る必要があります。

つまり、ファイルの残りの部分に影響を与えずにファイルの1行の内容を変更したいと思います。しかし、私は行の始めだけを知っています。たとえば、次のような行があるとします。

CURRENT_DATE 2020-03-02

それともそうかもしれません

CURRENT_DATE 2019-04-01

別の日付 - 私が知っている唯一の日付はCURRENT_DATEで始まるということです。実際の現在の日付をそこに入れたいです。この行はファイルの中央にあり、他の行には影響しないでください。

ではどうすればいいですか? sedは一般的な代替品ですが、ワイルドカードが必要なので少し恥ずかしいです。

ベストアンサー1

$ cat file
foo
CURRENT_DATE 2020-03-02
bar

$ sed 's/^\(CURRENT_DATE\).*/\1 '"$(date +'%F')"'/' file
foo
CURRENT_DATE 2020-07-17
bar

$ awk -v d="$(date +'%F')" '$1=="CURRENT_DATE"{$2=d} 1' file
foo
CURRENT_DATE 2020-07-17
bar

おすすめ記事