Linux

如何在bash中重組日期變數

  • August 14, 2019

我有一個 bash 腳本,它以這種格式獲取使用者輸入的日期: dd.mm.yyyy並將其保存為變數$date

現在我需要將此變數修改為以下格式:yyyymmdd以供進一步使用。

所以沒有更多的點,並且點之間的值是從前到後的。

例如,有沒有一種簡單的方法來做這種事情sed

這是一個純粹的bash解決方案:

$ # input is dd.mm.yyyy
$ input_date="dd.mm.yyyy"
$ # output will be yyyymmdd
$ output_date=${input_date:6:4}${input_date:3:2}${input_date:0:2}
$ echo "$output_date"
yyyymmdd

這是我的簡單sed方法。不是特別聰明但有效:-)

$ IN=12.34.5678
$ OUT=$(echo $IN | sed 's/\(..\).\(..\).\(....\)/\3\2\1/')
$ echo $OUT
56783412
$

awk方法

$ OUT=$(echo $IN | awk -F. '{print $3$2$1}')
$ echo $OUT
56783412
$

tr//混合tac_paste

$ OUT=$(echo $IN | tr '.' '\n' | tac | paste -s -d "")
$ echo $OUT
56783412
$

引用自:https://unix.stackexchange.com/questions/534033