LoginSignup
0
0

More than 5 years have passed since last update.

シェルスクリプトで30分前や30分後の時刻を求めるワンライナー

Last updated at Posted at 2018-06-07
  • richmikanさんのutconvを使います
  • utconvはYYYYMMDDhhmmssという形式での入力を要求するが、区切り文字が無い数字の羅列は人間にとって見づらいので、任意の区切り文字付き(YYYY-MM-DD hh:mm:ss など)で入力したうえで、sedで区切り文字を削っている
  • 出力もawkで区切り文字を付加している
30分前の時刻を求める
$ echo '2018-06-07 16:46:00' | sed 's/[-: ]//g' | utconv | xargs -IXXX echo "XXX - 30 * 60" | bc | utconv -r | awk '{print substr($0,1,4) "-" substr($0,5,2) "-" substr($0,7,2) " " substr($0,9,2) ":" substr($0,11,2) ":" substr($0,13,2)}'
2018-06-07 16:16:00
30分後の時刻を求める
$ echo '2018-06-07 16:46:00' | sed 's/[-: ]//g' | utconv | xargs -IXXX echo "XXX + 30 * 60" | bc | utconv -r | awk '{print substr($0,1,4) "-" substr($0,5,2) "-" substr($0,7,2) " " substr($0,9,2) ":" substr($0,11,2) ":" substr($0,13,2)}'
2018-06-07 17:16:00
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0