首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

linux sed 下令的简单应用

2012-06-26 
linux sed 命令的简单应用linux sed 命令 是linux shell脚本中比较重要的命令,下面就根据一个小小的需求来

linux sed 命令的简单应用

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

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

123451 li.maoyuan cost=123ms2 mao.yuan cost=234ms3 maoyuan.li cost=345ms4 li.mao.yuan cost=456ms5 mao.yuan.li cost=567ms

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

期望的结果是

1234insert 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”

12345[root@web68 sed]# grep 'li' test.log1 li.maoyuan cost=123ms3 maoyuan.li cost=345ms4 li.mao.yuan cost=456ms5 mao.yuan.li cost=567ms

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

12345[root@web68 sed]# grep 'li' test.log | sed 's/. //'li.maoyuan cost=123msmaoyuan.li cost=345msli.mao.yuan cost=456msmao.yuan.li cost=567ms

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

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

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

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

12345[root@web68 sed]# grep 'li' test.log | sed 's/. //' | sed 's/cost=//' | sed 's/ms//' | gawk '{print "insert into values (""$1"",""$2"");"}'; > resutl.loginsert 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 命令的简单应用

热点排行