用sed和echo处理文本

最近有个朋友要处理一些文本数据
原始数据大概如下:
[root@goolen goolen]# cat haiqing.log 
a,b,c,d,20141123,121010
a,b,c,d,20141124,121011
a,h,d,d,20141125,121012
a,g,g,w,20141126,121013
a,d,h,e,20141127,121014
a,x,u,r,20141128,121015

他需要把把后面的日期改为yyyy-mm-dd的格式,时间改为HH:MI:SS的格式
我简单的用几个shell命令处理了一下,能达到目的,当然也可以用其他语言来实现

a,b,c,d,2014-14-11,23:12:10 a,x,u,r,2014-14-11,28:12:10
[root@goolen goolen]# for haiqing in `cat haiqing.log`;do echo "${haiqing:0:8}${haiqing:8:4}-${haiqing:12:2}-${haiqing:14:2},${haiqing:17:2}:${haiqing:19:2}:${haiqing:21:2}";done
a,b,c,d,2014-11-23,12:10:10
a,b,c,d,2014-11-24,12:10:11
a,h,d,d,2014-11-25,12:10:12
a,g,g,w,2014-11-26,12:10:13
a,d,h,e,2014-11-27,12:10:14
a,x,u,r,2014-11-28,12:10:15
[root@goolen goolen]# sed -e 's/\(...........\)\(..\)\(.........\)$/\1-\2-\3/' -e 's/\(....\)\(..\)\(..\)$/\1:\2:\3/' haiqing.log
a,b,c,d,2014-11-23,12:10:10
a,b,c,d,2014-11-24,12:10:11
a,h,d,d,2014-11-25,12:10:12
a,g,g,w,2014-11-26,12:10:13
a,d,h,e,2014-11-27,12:10:14
a,x,u,r,2014-11-28,12:10:15
[root@goolen goolen]# sed -e 's#\([^0-9][0-9][0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)#\1-\2-\3#' -e 's#\([^0-9][0-9][0-9]\)\([0-9][0-9]\)\([0-9][0-9]\)#\1:\2:\3#' haiqing.log   
a,b,c,d,2014-11-23,12:10:10
a,b,c,d,2014-11-24,12:10:11
a,h,d,d,2014-11-25,12:10:12
a,g,g,w,2014-11-26,12:10:13
a,d,h,e,2014-11-27,12:10:14
a,x,u,r,2014-11-28,12:10:15

刚好也有另一位朋友也来问我shell方面的问题
他的需求如下:
/opt/app/oracle/product/10.2.0/network/admin/listener.ora
shell里传参数,其中一个参数是一个文件的绝对路径,在shell需要把这个路劲截取为两部分,一部分是路劲,一部分是文件名
如下:
/opt/app/oracle/product/10.2.0/network/admin/    路径
listener.ora   文件名

其实这种需求,有现成的shell命令可以处理,当然用其他命令也能实现,我试了几种方法,如下:
[root@goolen goolen]# path='/opt/app/oracle/product/10.2.0/network/admin/listener.ora' 

取路劲的:
[root@goolen goolen]# echo ${path%/*}
/opt/app/oracle/product/10.2.0/network/admin

[root@goolen goolen]# dirname $path
/opt/app/oracle/product/10.2.0/network/admin

取文件名的:
[root@goolen goolen]# echo $path |awk -F'/' '{print $NF}'    
listener.ora

[root@goolen goolen]# echo ${path##*/}
listener.ora
[root@goolen goolen]# 

[root@goolen goolen]# basename $path   
listener.ora

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23249684/viewspace-1350240/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23249684/viewspace-1350240/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值