0x15 数据工程师,常用Shell命令

摘要:Linux以该无坚不摧的一声令下行称霸江湖,Shell命令是数量极客的必修兵器。探索性数据解析,在需求与数目还无太明确的条件下,使用各种吩咐进行相同坏探索和挖。从基础之文书查看到概括的统计,再到有些常用之批判性分析命令,其目的都不过是为着重新好之召开多少解析及挖而已。

一个人数用在屋子里,总觉得身后出什么事物,老想转身看同样看押,又惧自己的吓人猜想成真……是您也?几只暖萌的“鬼故事”送给你,愿你不再恐惧。

0x15.jpg

1.
屋里,几独胆小之女童又惊又提心吊胆的取得成一团,捂着眼看着某国出名的鬼片。“你……你生出无产生觉得到骨子里有阵子朔风……”“别说!好怕啊什么什么什么什么什么……”

01 Shell命令行

对此时常跟数码打交道的人数来说,数据工程师应该吗是时常同Linux打交道。Linux以其强劲的通令行称霸江湖,因此,Shell命令也是数量极客的必修兵器。

行使Linux命令行的几乎独令,就好完成有简易的统计分析工作,比如
以wc命令统计文件实行,单词数,字符数,利用sort排序和去重,再成uniq可以进行词频统计。比如:

$ cat file.txtyunjieyunjie-talkyunjie-yunyunjieyunjie-shuo$ sort file.txt | uniq -c | sort -nr | head -5 2 yunjie 1 yunjie-shuo 1 yunjie-talk 1 yunjie-yun

事先用cat命令,了解一下文本之盖格式和内容,发现各个行为一个单词。现在待统计这些单词出现的频率,以及展示出现次数最多之5个单词。

先对文本进行排序,这样同样的只有词在艰苦守的履,再后uniq -c
命令,统计不同的单词和顺序单词出现的次数。这样得到的结果就是是次数后面跟着单词,然后以sort
-nr对次数进行排序,并逆序显示,最后head命令显示结果的前方5行。

非常简单的一律栽办法,读取文件,排序,统计,再针对统计结果开展逆序,最后就展示前几单结果。

类似于sql语句:

select word,count(1) cntfrom filegroup by wordorder by cnt desclimit 5;

要对sql语句熟悉的话,上面的形式应再次易于了解。虽然实现的沉思与法非常简单,但以实际上的开拓性数据解析面临行使却非常累。

她气呼呼的当房间里混飞,现在之人类,太不像话了,谁告诉你不行都是穿在白衣服涂个雅红唇啊,现在盛行斩男色好吧!胡乱抹黑我们,以为我们无便于美的什么!

02 探索性分析

按照当日记分析着,有时连从未那个引人注目的对象,或者即使有强烈的目标,通常各种数码也并无明确的概念。比如,别人丢给你一个压缩文件,说眷恋分析一下里来怎样是生的访问请求。任务描述就是是这么,没有再次显的了。

将到日志文件和如此的分析任务,就需要进行各种可能的开拓性分析。先看一下文本之格式,是否减少了,使用gzip压缩或tar压缩。解压后,需要事先盖了解一下,文件是怎的格式。对于网络要的日志文件,是单排一个呼吁与应,还是多行一个呼吁和响应。查看文件来小行,查看文件占用空间尺寸。如果解压后含有多只目录或者文件,同样的一个指令,更会发挥强有力力量。此时,通常需要如下命令:

gzip/tar:压缩/解压
cat/zcat:文件查看
less/more:文件查看,支持gz压缩格式直接翻
head/tail:查看文件前/后10实施
wc:统计行数、单词数、字符数
du -h -c -s:查看空间占据

上面来一个于好玩之命令组,less和more,这有限单还得以分页查看文件。最开头有些more命令,好像是立即more不支持于后翻页。于是一拉扯人即在这基础及开展了改良,直接被less,和more同样的功用就是双重强劲些。因此,也进步起了“less
is
more"的哲学,“少就凡大抵”,而且丢失比多重复好。这种考虑,在产品设计与代码优化中还生体现。

刺探文件的光景信息后,可能要领取一行中某个只字段的情,或者用摸索某些行出来,或者用针对某些字符或实施进行自然之修改操作,或者用以很多之目录和文件被检索来有之天之日志(甚至找到后需针对这些天之日记进行统一处理),此时脚这些命令可以拉您:

awk:命令行下的数据库操作工具
join/cut/paste:关联文件/切分字段/合并文件
fgrep/grep/egrep:全局正则表达式查找
find:查找文件,并且针对寻找结果批量化执行任务
sed:流编辑器,批量改动、替换文件
split:对怪文件进行切分处理,按多少行一个文书,或者有些字节一个文书
rename:批量再次命名(Ubuntu上带来的perl脚本,其它系统要设置),使用-n命令进行测试

如:

# 解压缩日志$ gzip -d a.gz$ tar zcvf/jcvf one.tar.bz2 one# 直接查看压缩日志$ less a.gz # 无需先解压

此外,以z开头的几个令可以概括处理gzip压缩文件,
如zcat:直接打印压缩文件,还有zgrep/zfgrep/zegrep,在压缩文件中直接搜索。

# 查询字符串,并显示匹配行的前3行和后3行内容fgrep 'yunjie-talk' -A 3 -B 3 log.txt# 在当前目前(及子目录)下,所有的log文件中搜索字符串hacked by:$ find . -name "*.log" | xargs fgrep "hacked by"

fgrep, grep, egrep的局部分:

fgrep按字符串的当意思了配合,里面的正则元字符当成普通字符解析, 如:
fgrep "1.2.3.4" 则只是相当配ip地址: 1.2.3.4,
其中的.不见面配合配任意字符。fgrep当然会较grep快多矣。写起又简便,不用转义。
grep只以普通的局部正则,egrep或者grep -E使用扩展的正则,如

egrep "one|two", 匹配one或者twogrep -E -v "\.jpg|\.png|\.gif|\.css|.js" log.txt |wc -l

招来所有自日本之ip的乞求,先管所有来源ip取出来,去重新,找来日本的ip,放入文件japan.ip,再以命令:

$ cat log.gz | gzip -d | fgrep -f japan.ip > japan.log

本着hive中导出的文本,替换\001

cat 0000* | sed 's/\x1/ /g' > log.txt

2.“给您说个大行笑的业务啊”“恩”“住我们小之要命人类小男孩好为笑啊”“怎么啦?”“他每晚都担心我会偷看他安息呢!”“真是的,也未想想,谁想看他流口水打呼噜的蠢样啊!”

03 其它常用命令

假若文件编码是自从windows上污染过来的gb2312编码,需要处理成utf8的编码,或者有日志被黑客后来修改过了,需要与原先的备份数据开展比,这些工作且是索要多少工程师自己力所能及熟悉的操纵。

比方日志文件是近来同一年之请日志,那么可能是按天或者本小时开展独立存放,此时一旦只是需要取某些天(比如周末)的数码,很可能得处理时。

故,下面的组成部分命令或者工具就是非常有因此了:

date:命令行时间操作函数
sort/uniq:排序、去重、统计
comm:对片只排序文件进行按行比较(共同实施、只现出于左侧文件、只现出在右文件)
diff:逐字符比较文件之异议,配合cdiff,类似于github的示效果
curl/w3m/httpie:命令行下进行网络要
iconv:文件编码转换,如:iconv -f GB2312 -t UTF8 1.csv > 2.csv
seq:产生连续的队,配合for循环使用

出口今天/昨天底日子字符串

$ date -d today +%Y%m%d20160320$ date -d yesterday +%Y%m%d20160319

针对unix秒的拍卖

# 当前的时间$ date +%s1458484275$date -d @1458484275Sun Mar 20 22:31:15 CST 2016

些微个文本a.txt, b.txt求只出现在a.txt中的数量:

# 排序两个文件$ sort a.txt > a.txt.sort$ sort b.txt > b.txt.sort# 求只出现在c.sh中的内容$ comm -2 -3 a.txt.sort b.txt.sort

3.京都×大鬼界进修班,满头红发德高望重的×大教授气得吹胡子瞪眼拍在几朝台下吼道,“你们这些小坏!争点气啊!这次全国物理法术知识大赛而输给仙界那帮小崽子了!”

04 批量操作

本着地方的文书进行了一番探讨分析后,可能都生早晚之线索要么相了,需要重进一步的拍卖大量之文书要字段了。此时之步子也许是一个消耗时间之经过,也许是一个用看缘分的历程。总之,可能要综合上面的片段限令,并且针对大量的日志进行处理。

立马吗是体现Shell更精的单方面------批量化的功用了。命令于图形界面的无限酷优势就是,只待熟悉了,就格外爱实现批量化操作,将这些批量化的一声令下成成一个文件,于是就发生了剧本。

批量化命令或者脚本,熟悉几独常因此之流程控制,就可知表达出强有力的特性:

if条件判断:

if [ -d ${base_d} ]; then mkdir -p ${base_d};fi

while循环:

whiledo do_something;done < file.list

for循环(用得广大):

for x in *.log.gz;do gzip -d ${x};done

就几单标准判断和循环,也得以一直当指令行下使用,区别是多加几独分店隔开即可。

另外,执行长时间的天职,最好直接用nohup来操作。

转过去8上的日期序列:

$for num in `seq 8 -1 1`;do dd=`date --date="${num} day ago" +%Y%m%d`;echo ${dd};done2016031220160313201603142016031520160316201603172016031820160319

产生目录及文件如下:

20160320 目录 10.1.0.1_20160320*.log.gz 目录 201603200000.log.gz 文件 201603200010.log.gz 文件 10.1.0.2_20160320*.log.gz 目录 201603200000.log.gz 文件 201603200010.log.gz 文件

要求:去丢目录中之*.log.gz,这样充分轻受丁误解呢文件。 rename
-n为测试,rename使用与sed相同之语法。

$ for d in 201603??;do echo ${d}; cd ${d}; rename -n 's/\*\.log\.gz//' *.log.gz ; cd ..;done

测试就后,使用rename不加-n为真实施还命名操作。

“不慌我们的”留学生中莫爱谈内于害羞的吸血鬼委屈巴巴的游说。“恩?”“这次的压轴题是,如何了解人类所说沐浴在××主义的壮烈下……”

05 结尾

这时候只是简短列举了有的数目解析或数处理相关的通令,只能算Linux的Shell那博大精深的授命中的冰山一角。

但是万一能够管这些有关的一声令下融会贯通,并且会实际应用的话,也终究在数额极客的路上多活动了千篇一律步。

于基础的文本查看到简的统计,再到片常用的革命性分析命令,其目的都仅仅是为了更好的开多少解析及发掘而已。能综合这些命令,并做起来以,将命存放到文件,即产生了Shell脚本。Shell脚本本身为是平等流派强大的知识了,其中各个命令还有每个命令支持的参数,值得慢慢研究。

4.“走了,别吓着公老婆”鬼差劝着执拗的老爷爷。

    “她胆子小,怕黑,但是今休会见了。”

      “因为自己就于黑暗里”

5.外自幼就是可知观看人家看无展现之有些物。世人俗称“阴阳眼”。早慧的他以避免灾祸,将此事深深掩盖在胸,对看见的物吗从来视而不见
。直到来平等天遇到一个隐身在桌下偷吃人家甜品的有点坏,实在看不下去女生们惊呼自己之胃口,人群散去,快打烊的时候他买了同份提拉米苏放在桌子上。“怎么会发生若如此丢人的浅啊”桌下传来微弱声音“糟啦!被人类发现了呜呜……最近天界十一特别这么严格,我会不见面给严惩啊嘤……”

6.她独走以便道上,昏黄的路灯照在曲折的小巷显得鬼影幢幢……阴冷的风穿过后颈仿若有人低声念叨,她裹紧了大衣快步走有这深巷。身后隐隐传来声音……

“都怪而,跟那么紧做呀!小姐姐都吓跑了!”

“我心惊肉跳与丢了呗……在就还迷路好老了……”

“跟丟你个头啊,我们会飘诶”

“是哦……”

7.“总之……千万不要相信人类!”鬼妈妈因为立句话作了上床前故事的结果。鬼宝宝眨巴在惺忪的可怜双目陷入梦乡……梦里,他深受强暴之人类抓住了,他们残酷的解剖他透明的人,并且声明要引发他的爸爸妈妈,做成什么永动机,什么特别跨步迈入新世纪……哇!人类好可怕,我若妈妈……

8.世人常谓人不寒而栗女鬼,殊不知其实女鬼更恐怖人,尤其是人数饱受为称之为学霸的海洋生物。

稍稍倩曾不理会被一个眼镜男看见,眼镜没有一般人类应该之怕,反而对眼放光,缠住她问了像物质以及发现究竟孰是主体,如要物质为基点,那她们的留存……后来多少倩知道了眼镜专业是哲学,原本活泼灵动的它,如今来看人类还退避三舍。

所以您看,鬼魂也可是异常暖萌的生物嘛。如果你或害怕,那请与自家联合高声念

图片 1

相关文章

Comment ()
评论是一种美德,说点什么吧,否则我会恨你的。。。