使用linux将字符串ddmmyyyy转换为yymmdd

时间:2015-04-16 15:20:35

标签: linux text awk sed

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

10.04.2015 12:00:15

150410

日期将始终是日期格式,但是从文本文件中获取,所以据我所知我不能使用日期命令,我想我必须使用awk但我不知道它并且正在努力 - 建议会受到赞赏吗?

3 个答案:

答案 0 :(得分:3)

您可以使用bash parameter expansion来提取子字符串

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

答案 1 :(得分:1)

以下sed命令应该足够好了:

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

awk

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

毕竟我更喜欢后者。

答案 2 :(得分:0)

替代答案,使用awk:

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

如果您想稍后进行修改,可以进行一些解释:

  • $0是substr操作的输入文本
  • 第一个数字是子字符串开始的位置
  • 第二个数字表示子字符串的长度