日付から分を変数として削除

日付から分を変数として削除

私はKSHでスクリプトを書いているので、日付から分と秒を削除するロジックを見つけるのに役立ちます。ユーザーが2024-12-22-16-43-40を変数に渡すと、2024-12-22-16-00-00に変換する必要があります。

ベストアンサー1

kshを含むすべてのPOSIXシェルでは、(POSIX sh仕様は実際にはksh(そのサブセット)に基づいています)、最後${var%pattern}に一致する最も短い文字列の削除された値に拡張する演算子は、実際に80年代初頭にkshによって発明されました。 。はじめに):$varpattern

$ date=2024-12-22-16-43-40
$ printf '%s\n' "${date%-*-*}-00-00"
2024-12-22-16-00-00

ここでは、日付演算よりも多くの文字列演算を実行したいのですが、組み込み機能が後者を実行できることprintfに注意してください。ksh93ただし、2024-12-22-16-43-40形式は、デフォルトでサポートされているタイムスタンプ形式には含まれていません。

DATEMSKただし、標準の環境変数を使用して別のタイムスタンプ形式を指定できます。

$ echo '%Y-%m-%d-%H-%M-%S' > timefmt
$ export DATEMSK="$PWD/timefmt"
$ printf '%(%F-%H-00-00)T\n' "$date"
2024-12-22-16-00-00

おすすめ記事