使用 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
我正在努力转换包含以下字符串的文本文件:
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