文档章节

shell命令:抽取日志中最后一列内容并转为批量sql

zgw06629
 zgw06629
发布于 2015/04/27 14:34
字数 460
阅读 44
收藏 0

数据库表中有一url字段保存的是抓取url, 其中有些是无效的,当访问时会有如下的异常日志输出:

15-01-10 01:33:34,805 WARN com.test.recipevideohunter.VerifyDownloadUrl(VerifyDownloadUrl.java:45) ## 9 404 http://main.gslb.ku6.com/s1/t6F2Hw
OQFjnGhlk4/1228739498805/6a642a1a078c70105faecbfe279e0d60/1417507387239/v497/31/38/OvpyEGwZCS6OQw1FDCDpkEPw.mp4?rate=400 
15-01-10 01:33:49,823 WARN com.test.recipevideohunter.VerifyDownloadUrl(VerifyDownloadUrl.java:45) ## 16 404 http://main.gslb.ku6.com/s1/e1jhQ
lepjX5yM_Bw/1230877361121/4360b98ad5564c3a74609befa9391bcc/1417507393603/v477/10/31/r20PxPOUIQSiazUWgCCHPXIg.mp4?rate=180

想抽取出当前所有日志中的异常url。

日志均是以recipevideohunter开头且url为输出中最后一列。

  1. 打印最后一列url

awk '{print $NF}'  recipevideohunter*


2. 去重(因存在重复url)

awk '{print $NF}'  recipevideohunter* | sort | uniq

3. 重定向到一个文件中

awk '{print $NF}'  recipevideohunter*  | sort | uniq > invalid_url.txt

现在invalid_url.txt文件中的内容为(纯url了): 

http://main.gslb.ku6.com/o1/EPi7Gx2qL8gUbsPN/1218865000378/3e3ac380ad70221150d12803822be81b/1417507369022/v379/2/8/gH4x5sXGSuSfpUvmBBMj4Mg.mp4?
rate=250
http://main.gslb.ku6.com/s0/0qDR7_G3q03PATmc/1247598214983/73dc3715d688068e9d1167e97884b3eb/1417508605892/v591/25/6/gIMFWf23QKmUITSRqHWBkWQ.mp4
?rate=180
http://main.gslb.ku6.com/s0/0S_FT_u-PZao6wnP/1219971248203/56584bf6c1bc4e5a58c36ea85e9f578a/1417507639811/v340/11/14/9yJPs713S7CD9DgbZgK5aw.mp4
?rate=100

想将这些无效url从数据库中删除,如何得到批量删除sql呢?

vi  invalid_url.txt
:1,$s/^\(.*\)$/delete from tb_video where url='\1';/g

文本会转为:

delete from tb_video where url='http://main.gslb.ku6.com/s3/Q5LrC3SLgLhkgKEw/1229071108665/0abcb9d3ff15cfef9d5bd4b84ae3371c/1417507400981/v498/22/13/N3NAqsrMR12RF4EG0YcJpgB.mp4?rate=200';
delete from tb_video where url='http://main.gslb.ku6.com/s3/UN8gxoBmHkfj_GNS/1234122701846/ff2b38c04ebadbf7e7153c42e3e3b7d9/1417507397293/v532/19/23/VUVHC1lcMRY62NP77rU0UIqw.mp4?rate=100';
delete from tb_video where url='http://main.gslb.ku6.com/s4/0yqP8eDf_UmxuQUs/1234121433821/375d86953ff0c24e44ebb8c69b1465c4/1417508132623/v540/11/32/jUNwAJTSSQFuZxapvACilkOw.mp4?rate=100';

接着 :wq即可

注: 1,$ 表示从第一行到最后一行

 s/^\(.*\)$/delete from tb_video where url='\1';/

 s表示替换 s/old/new/

 ^\(.*\)$ 匹配整个url

 \1代表前面的整个url,也即括号里的内容

 /g 表示全部替换

若用java来实现同样功能的话,代码如下:

String url = "http://www.baidu.com/";
String sql = url.replaceFirst("(.*)", "delete from tb where url = '$1';"); //$1表示前面正则表达式里括号里的内容
System.out.println(sql); //delete from tb where url = 'http://www.baidu.com/';


© 著作权归作者所有

共有 人打赏支持
zgw06629
粉丝 16
博文 54
码字总数 30471
作品 0
海淀
程序员
Shell 中常见的日志统计方法

前面我发布过"Hadoop兮,杀鸡别用牛刀,python+shell实现一般日志文件的查询、统计", 需要结合python, 可能还是有一定的门槛, 现将shell部分剥离出来. 举例一些最基本的日志统计方法. (1)查看...

小水熊
2015/01/26
0
3
利用SQL数据库,实现Exchange的邮件跟踪BI分析

今年一年都没有怎么静下心写点东西,事情很多,变故也很多。上半年在老东家,邮件系统的架构做完了,Exchange2010也有了点了解。上个月,又杀回了北京。北京有很多朋友,也有很多51CTO的朋友...

bisheng.hu
2010/11/16
0
0
常用 shell sql 命令

vim添加指定开始的行号 :g/^/ s//=line('.')+765.':'/ vim 将文件所有行合并到一行 在 Normal Mode下执行: ggvGJ 逗号分割的字符串转化成多行 %s/,/r/g gg 用于跳到行首 v 转换成 visual 模...

birdinroom
06/28
0
0
深入了解当前ETL中用到的一些基本技术

数据集成是把不同来源、格式和特点的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享,是企业商务智能、数据仓库系统的重要组成部分。ETL是企业数据集成的饕饩龇桨浮N恼麓覧...

bsbforever
06/26
0
0
Shell编程进阶篇(完结)

   1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,...

侯召顺
2017/12/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java日期和时间获取问题

获取年月日时分秒 Calendar cal = Calendar.getInstance();//获取年int year = cal.get(Calendar.YEAR);//获取月,范围是0-11,最后使用需+1int month = cal.get(Cal...

lanyu96
25分钟前
7
0
Ceph学习笔记2-在Kolla-Ansible中使用Ceph后端存储

环境说明 使用Kolla-Ansible请参考《使用Kolla-Ansible在CentOS 7单节点上部署OpenStack Pike》; 部署Ceph服务请参考《Ceph学习笔记1-Mimic版本多节点部署》。 配置Ceph 以osdev用户登录: ...

LastRitter
29分钟前
6
0
OSChina 周二乱弹 —— 老司机表示右手无处安放

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @花间小酌 :分享李宗盛的单曲《鬼迷心窍》--春风再美也比不上你的笑 《鬼迷心窍》 - 李宗盛 手机党少年们想听歌,请使劲儿戳(这里) 每天早...

小小编辑
40分钟前
225
5
复习2

10月22日任务 awk 中使用外部shell变量 awk 合并一个文件 把一个文件多行连接成一行 awk中gsub函数的使用 awk 截取指定多个域为一行 过滤两个或多个关键词 用awk生成以下结构文件 awk用print...

hhpuppy
48分钟前
5
0
原型模式

1、原型模式-定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 克隆(浅度克隆->拷贝值类型或者引用,深度克隆->创建新的对象,开辟新的内存) 例如客户端知道抽象Pro...

阿元
今天
62
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部