文档章节

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

zgw06629
 zgw06629
发布于 2015/04/27 14:34
字数 460
阅读 40
收藏 0
点赞 0
评论 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
粉丝 15
博文 54
码字总数 30471
作品 0
海淀
程序员
Shell 中常见的日志统计方法

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

小水熊 ⋅ 2015/01/26 ⋅ 3

利用SQL数据库,实现Exchange的邮件跟踪BI分析

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

bisheng.hu ⋅ 2010/11/16 ⋅ 0

深入了解当前ETL中用到的一些基本技术

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

bsbforever ⋅ 2015/01/12 ⋅ 0

面向数据集成的ETL技术研究

数据集成是把不同来源、格式和特点的数据在逻辑上或物理上有机地集中,从而为企业提供全面的数据共享,是企业商务智能、数据仓库系统的重要组成部分。ETL是企业数据集成的主要解决方案。文章...

mj4738 ⋅ 2013/03/20 ⋅ 0

常用 shell sql 命令

查看内存占用 free -m | sed -n '2p' | awk '{print "used mem is "$3"M,total mem is "$2"M,used percent is "$3/$2*100"%"}' #!/bin/bashwhile : do phymem= phymemused= # echo $phymem #......

birdinroom ⋅ 2014/04/21 ⋅ 0

MySQL数据库操作个人手记

删除数据与删除表的区别 delete from table t1 where condition;drop table t1; 文本(excel、csv、txt等)数据批量导入数据库,这里比较建议在导入之前,最好建表语言的约束尽可能少,不然数...

高燕萍 ⋅ 2015/08/16 ⋅ 0

linux基础命令 awk

awk linux三剑客老大 过滤、输出内容,一门语言。NR代表行号 $1 第一列 $2 第二列 $0表示一行 NF表示指定分隔符后最后结尾一列 -F 指定分割符 。=为赋值 ==才是相等的意思 写出以:为分隔符,...

wx57f8cc3fb58bd ⋅ 2017/07/27 ⋅ 0

ETL介绍与ETL工具比较

ETL负责将分布的、异构数据源中的数据如关系数据、 ETL工具 旗鼓相当:Datastage与Powercenter: 就Datastage和Powercenter而言,这两者目前占据了国内市场绝大部分的份额,在成本上看水平相...

wl044090432 ⋅ 2017/03/04 ⋅ 0

Shell编程进阶篇(完结)

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

侯召顺 ⋅ 2017/12/12 ⋅ 0

基于ETL的抽取数据的报表实现

1、查询分析器 查询分析器主要工作是从不同来源的数据库中抽取对应指标值。 界面原型参考如下(仿 IREPORT): 图1 数据来源切换 2、报表科目与查询分析字段映射 图2 字段映射 这里,字段选择...

王宝林 ⋅ 2015/07/02 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 48分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部