052-老男孩教育每日一题-使用三剑客进行日期格式变化

运维每日一题

1.题目

老男孩教育每日一题-使用三剑客进行变化格式

原始数据:

期望结果:

2.参考答案

思路:

2.1 答案:

2.2 演示:

2.3 详细说明:

2.3.1 方法一:sed替换

这一个sed命令分为两个部分:

第一部分-把Apr替换为04
s#Apr#04#g
这一步完成后,文件的内容为17/04/2015:09:29:24 +0800
第二部分-进行匹配
s#^([0-9]+)/([0-9]+)/([0-9]+):(.*) (.*$)#\3-\2-\1 \4 \5#g

图1-1 详细解析正则表达式匹到的内容

2.3.2 方法二:awk替换

第一个里程碑-指定分隔符
awk -F "[/: ]"表示以/(斜线)或:冒号或空格为分隔符(菜刀)

第一列($1)第二列($2)第三列($3)第四列($4)第五列($5)第六列($6)第七列($7/$NF)
17Apr2015092924+0800

第二个里程碑-把Apr替换为04
sub(/Apr/,”04”)
这里使用gsub也可以。

第三个里程碑-显示出来并变化位置

上面的结果已经很接近我们想要的了。
接下来就是变化位置,得到我们想要的结果。

2.3.2 方法三:内置变量-技巧

说明:
这个方法唯一要说明的就是FIELDWIDTHS这个内置变量,注意结尾有S哟。
示例1-1 举个例子

我想把20160121变为2016-01-21

FIELDWIDTHS这个内置变量可以规定,每一列的长度,每一列有多少个字符或文本。
内置变量的定义一般放在BEGIN模式里面。
FIELDWIDTHS=”4 2 2” 这个定义表示,在一行中,分为3列,第一列4个符号,第二列2个符号,第三列2个符号。
所以第一列的内容是2016,第二列的内容是04,第三列的内容是21.最后组合一下就是我们想要的结果。

3.统计信息

今天是每日一题陪伴大家的第52天期待你的进步

对于题目和答案的任何疑问,请在博客评论区留言

往期题目索引

往期目录

继续阅读