.env
このようなファイルがあります。
PARAM1=val
PARAM2=val
空白のない最後の行を別のファイルの内容に置き換えたいと思います。
これまで私は以下を持っています:
{ (sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' local.env | sed '$d' local.env && printf "CONFIG=%s" "$(cat config.json | jq -c .)") >local.env.mod; } && mv local.env.mod local.env
これを行うより良い/簡単な方法はありますか?
ベストアンサー1
ファイルを元に戻して交換できます。最初空白ではない行
printf -v new_line 'CONFIG=%s' "$(jq -c . config.json)"
tac local.env \
| awk -v line="$new_line" '
!n && /[^[:blank:]]/ {print line; n = 1; next}
{print}
' \
| tac > local.env.mod && mv local.env.mod local.env