首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

大数据有道之Linux神奇命令

当前,大数据生产和调试绝大部分是在Linux环境上进行的。究其原因:用户自主、系统开放,说直白了就是Linux作为用户的助手,辅助用户协调多种工具完成复杂的工程作业,甚至包括“rm -rf /(勿用)”。

在Linux环境上进行大数据探索,必然离不开一系列的系统交互命令。下面大数据有道和大家介绍下三个Linux高级神器,让大数据开发事半功倍。

@小燕子,ls --help查看使用帮助或者man ls查看说明文档,可自学哦

数据源

为了获取验证Linux命令所使用的样例数据,这里通过在Linux的crontab中设置定时任务,不断收集脚本所产生的时间数据。

1.crontab任务

Linux常用的定时调度系统(crontab),每5分钟调度crontab_printer.sh脚本。

简单说明下crontab时间参数:*/5(minute 0-59)*(hour 0-23)*(day of month 1-31)*(month 1-12)*(day of week 0-6),是5个时间粒度。

2.printer脚本

很easy,将系统时间格式化后重定向到目标文件中。

特别提示:重定向符号">>"是在没有printer.log文件时会自动创建然后写入内容,若文件存在的话则追加方式写入内容;重定向符号">"在没有printer.log文件时会自动创建并写入内容,若文件存在的话则覆盖方式写入内容。

数据内容

整理数据共550条(行)记录;内容格式为"2018-04-24 20:50:01"。

grep

1.简介

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

2.常规过滤

默认,匹配过滤出包含有目标字符串"2018-04-24 20:3"的结果;

参数-c,打印匹配结果个数;

参数-n,打印匹配结果对应源文件的行位置;

参数-o,只打印完全匹配的内容;

参数-v,不包含的过滤条件(反逻辑查询);

参数-A,打印匹配行及后2行,-B 2打印匹配行及前2行,-C 2打印匹配行及前后2行;

参数-i,忽略大小写。

3.递归及正则匹配

参数-r,在当前目录(./)递归匹配每个文件中的目标字符串;

默认参数,在指定的多个文件中匹配;

参数-E+|,正则匹配的或逻辑;

参数-E+.*,正则匹配的且逻辑,.代表除"\n"任意字符,*代表多个(0-n);

参数-E+[ ],正则匹配的或逻辑,配置的位置为3或者4。

sed

1.简介

sed(stream editor),一种流编辑器,它是文本处理工具中的扛把子,能够扩展使用正则表达式,巧夺天工。工作原理:将待处理行注入临时缓存区(模式空间 pattern space),接着sed对缓存区文本进行编辑并输出结果,之后执行下一行内容直至末尾行。使用sed-i+ 参数(模式)+ 文本可实现对文本编辑并 保存。

2.常用增删编辑

参数d,删除第一行;

参数2,$,删除第二行到末尾行;

参数2i,在第二行前插入文本内容;

参数3a,在第三行后插入文本内容;

参数/xx/i,在匹配行前插入文本内容;

参数-n ‘1,/xx/p’,从第一行开始打印到第一个匹配的行为止,-n+p组合时只打印符合条件的行。

3.正则匹配及分组

模式's/x/y/g':每行的范围内(g),将所有的x替换为y;

模式's/x/y/3g':每行的范围内第3个匹配值开始,将所有的x替换为y;

模式's#x#y#g':界定符/可替换为#,同理's+x+y+g'也可用,很智能;

模式-e 's/x/y/g':一条命令中支持多个编辑依次执行;

模式's/^.*$//g':将每行除\n内容清空,^$分别对应开始和结尾,.*组合代表任意多个非\n字符;

模式's/[0-9]\+/&x/g':在匹配到的数值后加x符号,[0-9]\+标识贪婪匹配任意长的数值,&表示所匹配内容的标记符(也可理解为变量);

模式's/\([0-9\-]\+\)\([0-9\:]\+\)/\2\1/':分组匹配方式,第一部分匹配到的内容记为第1组,第二部分匹配到的内容记为第2组,1、2组内容位置交换;

模式's/\([0-9\-]\+\)/\1_/':分组匹配方式,在匹配到的数值后加_符号,同f。

awk

1.简介

awk(创始人 Alfred Aho 、Peter Weinberger 和 Brian Kernighan 姓氏首字母),有丰富的自建函数,同时支持自定义函数和正则表达式,是类似于C的完整编程语言,相当强悍。工作原理:读入数据流前执行BEGIN模块完成初始化,可省略;PRTTERN模块根据用户自定义方式处理每行数据,重要环节;最后输入流完成后执行END模块汇总输出结果,可省略。

awk通常由BEGIN语句块、模式匹配通用语句块、END语句块组成,其中模式匹配通用语句块支持正则匹配、关系表达式、模式匹配、BEGIN TATTERN END模式和变量、内置函数、控制流操作。

2.常用功能

常规模式:BEGIN PATTERN END模块,PATTERN中完成计数功能;

预定义变量:$1代表awk行分组数据中第一个值,NF代表行分组数据中最后值;

行号标识:NF代表所处理行对应的行号,最后打印的行号即代表总行数;

传参方式:-v传参参和直接引用最后声明的参数,两种方式;

逻辑运算:awk中支持三元选择等逻辑运算功能;

分隔符:默认以空格分割,同时支持符合字符分割,分割后下标依次排序。

3.高级功能

正则匹配:~和!~分别表示匹配和不匹配,//中内容为正则表达式;

next模式:当满足正则匹配条件后next相当于continue作用,直接执行下一行处理,该逻辑是将匹配行拼接到之后的每一行中;

内置函数gsub:将$0中正则匹配到字符串替换为指定字符串,支持贪婪匹配;

字典统计:将日期作为字典的key,相同key则++,最后for循环中打印key和value,支持排序(sort -k 2r是以打印第二列降序排序);

字典去重:日期+小时作为字典的key,首次key则+1,相同key时跳过(有去重作用)。

彩蛋

1.watch

时钟小工具,周期性执行设定的指令。

-n:执行周期,单位秒;-d:显示与上次的区别;“xxx”:定时执行性的指令。

2.cd -

返回上次访问的目录(回城卷轴)。

3.cal

秒看日期。

归纳总结

Linux三神器各有所长:grep适合筛选过滤、sed适合文本编辑、awk全能型,更适合统计处理;

grep、sed、awk均支持正则匹配,熟练掌握正则匹配手法是linux开发和大数据探索的进阶必备;

Linux中汇集了极多有趣、实效的工具,但只有不断的动手+实践才能做到学以致用。

大数据有道Bigdata In Thinking

读大数据有道,为您提供通俗易懂的技能分享,让大数据更容易!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180429G002HW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券