我有一个 bash 脚本,它采用以下格式获取用户输入的日期:
dd.mm.yyyy
并将其保存为变量$date
现在我需要将此变量修改为以下格式:yyyymmdd
以供进一步使用。
因此不再有点,并且点之间的值从后到前。
sed
例如,有没有一种简单的方法可以做这种事情?
答案1
这是一个纯粹的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
答案2
这是我的简单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
$
答案3
echo "26.11.2016" | awk -F"." '{print $3$2$1}'
输出:20161126
答案4
该date
命令可以以 ISO8601 格式输出,带有修饰符:
robert@pip2:/tmp$ date
Mon Aug 5 16:09:35 PDT 2019
robert@pip2:/tmp$ date --iso-8601
2019-08-05
...然后删除之间的连字符。使用 sed:
robert@pip2:/tmp$ date --iso-8601 | sed s/-//g
20190805