私はKSHでスクリプトを書いているので、日付から分と秒を削除するロジックを見つけるのに役立ちます。ユーザーが2024-12-22-16-43-40を変数に渡すと、2024-12-22-16-00-00に変換する必要があります。
ベストアンサー1
kshを含むすべてのPOSIXシェルでは、(POSIX sh仕様は実際にはksh(そのサブセット)に基づいています)、最後${var%pattern}
に一致する最も短い文字列の削除された値に拡張する演算子は、実際に80年代初頭にkshによって発明されました。 。はじめに):$var
pattern
$ 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