使用 linux 将字符串 dd mm yyyy 转换为 yyyy mm dd

convert string ddmmyyyy to yymmdd using linux

我正在努力转换包含以下字符串的文本文件:

10.04.2015 12:00:15

150410

日期始终是日期格式,但取自文本文件,据我所知,我不能使用日期命令,我想我必须使用 awk,但我不太了解,我苦苦挣扎 - 不胜感激?

下面的 sed 命令应该足够好了:

sed -r 's/([0-9]+)\.([0-9]+)\.[0-9]{2}([0-9]{2}) ([0-9]+:?){3}//g' input

awk:

awk -F'[.: ]' '{print substr(,3),,}' OFS='' input

毕竟我更喜欢后者

替代答案,使用 awk:

DATE="10.04.2015 12:00:15"
echo $DATE | awk '{print substr([=10=],9,2) substr([=10=],4,2) substr([=10=],1,2)}'

如果你想稍后做修改的一些解释:

  • [=11=]是substr操作的输入文本
  • 第一个数字是子字符串开始的地方
  • 第二位表示子串的长度

可以使用bash parameter expansion提取子串

$ date="10.04.2015 12:00:15"
$ newdate=${date:8:2}${date:3:2}${date:0:2}
$ echo $newdate
150410