linux 的sed的echo,用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/,如需转载,请注明出处,否则将追究法律责任。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值