linux sed 命令的简单应用

linux sed 命令 是linux shell脚本中比较重要的命令,下面就根据一个小小的需求来琢步分解一条较复杂的sed命令。

首先创建一个测试文档,命名为 test.log

1
2
3
4
5
1 li.maoyuan cost=123ms
2 mao.yuan cost=234ms
3 maoyuan.li cost=345ms
4 li.mao.yuan cost=456ms
5 mao.yuan.li cost=567ms

需求是将这个日志中包含 “li” 的记录,中间名称部分和后面的消费时间,拼成一句sql ,并存入数据库。

期望的结果是

1
2
3
4
insert into values ( "li.maoyuan" , "123" )
insert into values ( "maoyuan.li" , "345" )
insert into values ( "li.mao.yuan" , "456" )
insert into values ( "mao.yuan.li" , "567" )

下面来一步步的分解。

首先利用grep命令来过滤 “li”

1
2
3
4
5
[root@web68 sed]# grep 'li' test.log
1 li.maoyuan cost=123ms
3 maoyuan.li cost=345ms
4 li.mao.yuan cost=456ms
5 mao.yuan.li cost=567ms

然后来删掉记录前面的数字

1
2
3
4
5
[root@web68 sed]# grep 'li' test.log | sed 's/. //'
li.maoyuan cost=123ms
maoyuan.li cost=345ms
li.mao.yuan cost=456ms
mao.yuan.li cost=567ms

解释:sed ‘s/. //’ linux sed 命令 中的s标识,利用正则表达式来进行替换 ,正式表达式 /. / 是点加一个空格,意思是任意字符加一个空格。

然后同样利用linux sed 命令 中的s来删掉”cost=”和”ms”

1
2
3
4
5
[root@web68 sed]# grep 'li' test.log | sed 's/. //' | sed 's/cost=//' | sed 's/ms//'
li.maoyuan 123
maoyuan.li 345
li.mao.yuan 456
mao.yuan.li 567

最后利用linux gawk命令 把结果拼出SQL,并输出到result.log文件中

1
2
3
4
5
[root@web68 sed]# grep 'li' test.log | sed 's/. //' | sed 's/cost=//' | sed 's/ms//' | gawk '{print "insert into values (\""$1"\",\""$2"\");"}' ; > resutl.log
insert into values ( "li.maoyuan" , "123" );
insert into values ( "maoyuan.li" , "345" );
insert into values ( "li.mao.yuan" , "456" );
insert into values ( "mao.yuan.li" , "567" );

这样就大功造成了,一句看似很复杂的命令集,其实都是若干个最基本点组成的。

linux sed的基本命令可以去这里了解 http://ericyuen.blogbus.com/logs/4819803.html

转载请保留出处 - linux sed 命令的简单应用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值