shell问题案例及三剑客awk与sed解决实践

20150418周末小题
原始数据:
17/Apr/2015:09:29:24 +0800
17/Apr/2015:09:30:26 +0800
17/Apr/2015:09:31:56 +0800
18/Apr/2015:09:34:12 +0800
18/Apr/2015:09:35:23 +0800
19/Apr/2015:09:23:34 +0800
19/Apr/2015:09:22:21 +0800
20/Apr/2015:09:45:22 +0800
期望结果:
2015-04-17 09:29:24+0800
2015-04-17 09:30:26+0800
2015-04-17 09:31:56+0800
2015-04-18 09:34:12+0800
2015-04-18 09:35:23+0800
2015-04-19 09:23:34+0800
2015-04-19 09:22:21+0800
2015-04-20 09:45:22+0800

解决实践:来自运维21期悠久之翼 群内分享
[[email protected] ~]# cat oldboy.txt 
17/Apr/2015:09:29:24 +0800
17/Apr/2015:09:30:26 +0800
17/Apr/2015:09:31:56 +0800
18/Apr/2015:09:34:12 +0800
18/Apr/2015:09:35:23 +0800
19/Apr/2015:09:23:34 +0800
19/Apr/2015:09:22:21 +0800
20/Apr/2015:09:45:22 +0800

[[email protected] ~]# awk ‘{sub(/Apr/,"04");split($0,array,"[/: ]") ;printf("%s-%s-%s %s:%s:%s%s\n",array[3],array[2],array[1],array[4],array[5],array[6],array[7])}‘ oldboy.txt 
2015-04-17 09:29:24+0800
2015-04-17 09:30:26+0800
2015-04-17 09:31:56+0800
2015-04-18 09:34:12+0800
2015-04-18 09:35:23+0800
2015-04-19 09:23:34+0800
2015-04-19 09:22:21+0800
2015-04-20 09:45:22+0800
[[email protected] ~]# sed -nr ‘s#(..)/(...)/(....):(..):(..):(..) (.*)#\3-\2-\1 \4:\5:\6\7#;s#Apr#04#p‘ oldboy.txt 
2015-04-17 09:29:24+0800
2015-04-17 09:30:26+0800
2015-04-17 09:31:56+0800
2015-04-18 09:34:12+0800
2015-04-18 09:35:23+0800
2015-04-19 09:23:34+0800
2015-04-19 09:22:21+0800
2015-04-20 09:45:22+0800
时间: 2024-08-11 01:36:32

shell问题案例及三剑客awk与sed解决实践的相关文章

Shell编程之正则表达式三剑客——awk工具

awk概述 在 Linux/UNIX 系统中,awk 是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于 Shell 脚本,完成各种自动化配置任务. 1,awk常见用法 通常情况下 awk 所使用的命令格式如下所示,其中,单引号加上大括号"{}"用于设置对数据进行的处理动作.awk 可以直接处理目标文件,也可以通过"-f"读取脚本对目标文件进行

linux三剑客awk、sed、grep

1.awk主要用来做分列.匹配.计算的工作    2.sed主要用来做替换的(流处理)    3.grep主要用来过滤出需要的文本 awk(默认的分隔符为空格)awk    -F ":"  '/bonzi/{if (NR==2) print  $0}'(一般模式) -F    设置分隔符,可以设置多个分隔符     -F  "[:!]+" NR    表示行号 $NF   表示尾行 NF 当前记录中的字段个数 内置函数 gsub(r,s) 在整个$0中用s代替r g

shell脚本---grep、awk、sed工具

grep:Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来.grep是一种查找过滤工具,正则表达式在grep中用来查找符合模式的字符串. grep有三种变形: 1.grep:标准grep命令主要讨论此格式. 2.egrep:扩展grep,支持基本及扩展的正则表达式 3.fgrep:快速grep,允许查找字符串而不是一个模式.这里的快速并不是值速度快 格式 grep [options] 主要参数 [options]主要参数: -c:只输出匹配行

shell 正则表达三剑客--awk

awk命令 awk和sed一样是流式编辑器,它也是针对文档中的行来操作的,一行一行的去执行.awk比sed更加强大,它能做到sed能做到的.awk工具其实是很复杂的,有专门的书籍来介绍它的使用. 1 awk命令形式 awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value '  '         引用代码块 BEGIN       初始化

Linux三剑客awk的应用对比案例详解

awk的格式 一 awk     参数     '条件'(单引号)  文件路径 a.参数我们一般用-F  "[]"  (双引号)   指定分隔符 b.条件  为BEGIN 模块  +  模式{条件}  + END模块 b1.BEGIN模块在执行awk读取文件之前就执行,一般用来定义我们的内置变量,awk必须在输入文件进行任何处理前先执行BEGIN里的动作(action). b2.模式{条件}模式就是我们需要查找的范围.模式可以通过正则表达式模式,比较式模式,范围式模式,特殊的模式即BE

三剑客之老二sed详解

    三剑客之老二sed 第1章 sed介绍 我们都知道,在Linux中一切皆文件,比如配置文件,日志文件,启动文件等等.如果我们相对这些文件进行一些编辑查询等操作时,我们可能会想到一些vi,vim,cat,more等命令.但是这些命令效率不高,这就好比一块空地准备搭建房子,请了10个师傅拿着铁锹挖地基,花了一个月的时间才挖完,而另外一块空地则请了个挖土机,三下五除二就搞定了,这就是效率.而在linux中的"挖土机"有三种型号:顶配awk,中配sed,标配grep.使用这些工具,我们

Shell企业案例实战和企业面试题

shell企业面试题 1.批量创建带有随机小写字符文件程序 使用for循环在/pizza目录下创建10个html文件,其中每个文件包含10个随机小写字母加固定字母_pizza 1.思路分析: 核心是:创建10个随机小写字母 第一种:$RANDOM [root@web-01 /server/scripts]# echo $RANDOM 9839 范围0-32767 ,第一个容易被破解,使用的时候最好再加个字符串 第二种:openssl rand -base64 10 [root@web-01 /s

实用shell编写案例

1.能够设置检查服务器的台数 和 要检查哪台服务器,把不在线主机的ip地址和对应不在线的时间,并统计不在线主机的台数保存的到文件里.然后把文件内容显示到屏幕上.   1 #! /bin/bash   2 read -p "请输入检测台数:" x   3 s=0   4 b=0   5 for ((i=1;i<=x;i++))   6 do   7     read -p "请输入要检测的主机地址,输入后请稍后:" ip[$i]   8    9        

正则表达式三剑客之二sed工具

三剑客之二sed工具 sed(Stream EDitor)是一个强大而简单的文本解析转换工具,可以读取文本,并根据指定的条件对文本内容进行编辑(删除.替换.添加.移动等),最后输出所有行或者仅输出处理的某些行.sed 也可以在无交互的情况下实现相当复杂的文本处理操作,被广泛应用于 Shell 脚本中,用以完成各种自动化处理任务. sed 的工作流程主要包括读取.执行和显示三个过程. ?读取:sed 从输入流(文件.管道.标准输入)中读取一行内容并存储到临时的缓 冲区中(又称模式空间,patter