成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

九款命令行工具助力Linux環(huán)境下的數(shù)據(jù)分析

譯文
系統(tǒng) Linux
大部分此類工具都嚴(yán)格局限于Linux,而多數(shù)可同樣運(yùn)行在Unix甚至是Windows環(huán)境之下。在今天的文章中,我們將嘗試幾款簡(jiǎn)單的開(kāi)源數(shù)據(jù)分析工具,并共同了解它們?nèi)绾芜\(yùn)作。

 [[184313]]

【51CTO.com快譯】要對(duì)數(shù)據(jù)進(jìn)行分析,大家會(huì)從哪里入手?

對(duì)于大多數(shù)熟悉了圖形工作環(huán)境的朋友來(lái)說(shuō),電子表格工具無(wú)疑是第一選項(xiàng)。但命令行工具同樣能夠更快更高效地解決問(wèn)題——且只須稍微學(xué)習(xí)即可上手。

大部分此類工具凍嚴(yán)格局限于Linux,而多數(shù)可同樣運(yùn)行在Unix甚至是Windows環(huán)境之下。在今天的文章中,我們將嘗試幾款簡(jiǎn)單的開(kāi)源數(shù)據(jù)分析工具,并共同了解其如何運(yùn)作。

一、head與tail

首先,讓我們先從文件處理開(kāi)始。文件中有什么內(nèi)容?其格式如何?大家可以使用cat命令在終端中顯示文件,但其顯然不適合處理內(nèi)容較長(zhǎng)的文件。

輸入head與tail,二者能夠完整顯示文件中的指定行數(shù)內(nèi)容。如果大家未指定行數(shù),則默認(rèn)顯示其中10行。

  1. $ tail -n 3 jan2017articles.csv  
  2. 02 Jan 2017,Article,Scott Nesbitt,3 tips for effectively using wikis for documentation,1,/article/17/1/tips-using-wiki-documentation,"Documentation, Wiki",710  
  3. 02 Jan 2017,Article,Jen Wike Huger,The Opensource.com preview for January,0,/article/17/1/editorial-preview-january,,358  
  4. 02 Jan 2017,Poll,Jason Baker,What is your open source New Year's resolution?,1,/poll/17/1/what-your-open-source-new-years-resolution,,186 

在最后三行中,我能夠找到日期、作者姓名、標(biāo)題以及其他一些信息。不過(guò)由于缺少列頭,我不清楚各列的具體含義。下面查看各列的具體標(biāo)題:

  1. $ head -n 1 jan2017articles.csv  
  2. Post date,Content type,Author,Title,Comment count,Path,Tags,Word count 

現(xiàn)在一切都非常明確,我們可以看到發(fā)布日期、內(nèi)容類型、作者、標(biāo)題、提交次數(shù)、相關(guān)URL、各文章標(biāo)簽以及字?jǐn)?shù)。

二、wc

但如果需要分析數(shù)百甚至上千篇文章,又該如何處理?這里就要使用wc命令了——其為“字?jǐn)?shù)”一詞的縮寫(xiě)。wc能夠?qū)ξ募淖止?jié)、字符、單詞或者行數(shù)進(jìn)行計(jì)數(shù)。在本示例中,我們希望了解文章中的行數(shù)。

  1. $ wc -l jan2017articles.csv 93 jan2017articles.csv 

本文件共有93行,考慮到第一行中包含文件標(biāo)題,因此可以推測(cè)此文件是一份包含92篇文章的列表。

三、grep

下面提出新的問(wèn)題:其中有多少篇文章與安全話題有關(guān)?為了實(shí)現(xiàn)目標(biāo),我們假定需要的文章會(huì)在標(biāo)題、標(biāo)簽或者其他位置提到安全這一字眼。這時(shí),grep工具可用于通過(guò)特定字符搜索文件或者實(shí)現(xiàn)其他搜索模式。這是一款極為強(qiáng)大的工具,因?yàn)槲覀兩踔聊軌蚶谜齽t表達(dá)式建立極為精確的匹配模式。不過(guò)這里,我們只需要尋找一條簡(jiǎn)單的字符串。

  1. $ grep -i "security" jan2017articles.csv  
  2. 30 Jan 2017,Article,Tiberius Hefflin,4 ways to improve your security online right now,3,/article/17/1/4-ways-improve-your-online-security,Security and encryption,1242  
  3. 28 Jan 2017,Article,Subhashish Panigrahi,How communities in India support privacy and software freedom,0,/article/17/1/how-communities-india-support-privacy-software-freedom,Security and encryption,453  
  4. 27 Jan 2017,Article,Alan Smithee,Data Privacy Day 2017: Solutions for everyday privacy,5,/article/17/1/every-day-privacy,"Big data, Security and encryption",1424  
  5. 04 Jan 2017,Article,Daniel J Walsh,50 ways to avoid getting hacked in 2017,14,/article/17/1/yearbook-50-ways-avoid-getting-hacked,"Yearbook, 2016 Open Source Yearbook, Security and encryption, Containers, Docker, Linux",2143 

我們使用的格式為grep加-i標(biāo)記(告知grep不區(qū)分大小寫(xiě)),再加我們希望搜索的模式,最后是我們所搜索的目標(biāo)文件的位置。最后我們找到了4篇安全相關(guān)文章。如果搜索的范圍更加具體,我們可以使用pipe——它能夠?qū)rep同wc命令加以結(jié)合,用以了解其中有多少行提到了安全內(nèi)容。

  1. $ grep -i "security" jan2017articles.csv | wc -l 4 

這樣,wc會(huì)提取grep命令的輸出結(jié)果并將其作為輸入內(nèi)容。很明顯,這種結(jié)合再加上一點(diǎn)shell腳本,終端將立即變成一款強(qiáng)大的數(shù)據(jù)分析工具。

四、tr

在多數(shù)分析場(chǎng)景下,我們都會(huì)面對(duì)CSV文件——但我們?cè)撊绾螌⑵滢D(zhuǎn)換為其他格式以實(shí)現(xiàn)不同應(yīng)用方式?這里,我們將其轉(zhuǎn)化為HTML形式以通過(guò)表格進(jìn)行數(shù)據(jù)使用。tr命令可幫助大家實(shí)現(xiàn)這一目標(biāo),它可將一類字符轉(zhuǎn)化為另一類。同樣的,大家也可以配合pipe命令實(shí)現(xiàn)輸出/輸入對(duì)接。

下面,我們?cè)囋嚵硪粋€(gè)多部分示例,即創(chuàng)建一個(gè)TSV(即制表符分隔值)文件,其中只包含發(fā)表于1月20日的文章。

  1. $ grep "20 Jan 2017" jan2017articles.csv | tr ',' '\t' > jan20only.tsv 

首先,我們利用grep進(jìn)行日期查詢。我們將此結(jié)果pipe至tr命令,并利用后者將全部逗號(hào)替換為tab(表示為‘\t’)。但結(jié)果去哪了?這里我們使用〉字符將結(jié)果輸出為新文件而非屏幕結(jié)果。如此一來(lái),我們可以dqywjan20only.tsv文件中一定包含預(yù)期的數(shù)據(jù)。

  1. $ cat jan20only.tsv 20 Jan 2017 Article Kushal Das 5 ways to expand your project's contributor base 2 /article/17/1/expand-project-contributor-base Getting started 690 20 Jan 2017 Article D Ruth Bavousett How to write web apps in R with Shiny 2 /article/17/1/writing-new-web-apps-shiny Web development 218 20 Jan 2017 Article Jason Baker "Top 5: Shell scripting the Cinnamon Linux desktop environment and more" 0 /article/17/1/top-5-january-20 Top 5 214 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007 

五、sort

如果我們先要找到包含信息最多的特定列,又該如何操作?假設(shè)我們需要了解哪篇文章包含最長(zhǎng)的新文章列表,那么面對(duì)之前得出的1月20日文章列表,我們可以使用sort命令對(duì)列字?jǐn)?shù)進(jìn)行排序。在這種情況下,我們并不需要使用中間文件,而可以繼續(xù)使用pipe。不過(guò)將長(zhǎng)命令鏈拆分成較短的部分往往能夠簡(jiǎn)化整個(gè)操作過(guò)程。

  1. $ sort -nr -t$'\t' -k8 jan20only.tsv | head -n 1  
  2. 20 Jan 2017 Article Tracy Miranda How is your community promoting diversity? 1 /article/17/1/take-action-diversity-tech Diversity and inclusion 1007 

以上是一條長(zhǎng)命令,我們嘗試進(jìn)行拆分。首先,我們使用sort命令對(duì)字?jǐn)?shù)進(jìn)行排序。-nr選項(xiàng)告知sort以數(shù)字排序,并將結(jié)果進(jìn)行反向排序(由大到小)。此后的-t$'\t'則告知sort其中的分隔符為tab(‘\t’)。其中的$要求此shell為一條需要處理的字符串,并將\n返回為tab。而-k8部分則告知sort命令使用第八列,即本示例中進(jìn)行字?jǐn)?shù)統(tǒng)計(jì)的目標(biāo)列。

最后,輸出結(jié)果被pipe至head,處理后在結(jié)果中顯示此文件中包含最多字?jǐn)?shù)的文章標(biāo)題。

六、sed

大家可能還需要在文件中選擇特定某行。這里可以使用sed。如果希望將全部包含標(biāo)題的多個(gè)文件加以合并,并只為整體文件顯示一組標(biāo)題,即需要清除額外內(nèi)容; 或者希望只提取特定行范圍,同樣可以使用sed。另外,sed還能夠很好地完成批量查找與替換任務(wù)。

下面立足之前的文章列表創(chuàng)建一個(gè)不含標(biāo)題的新文件,用于同其他文件合并(例如我們每月都會(huì)定期生成某個(gè)文件,現(xiàn)在需要將各個(gè)月份的內(nèi)容進(jìn)行合并)。

  1. $ sed '1 d' jan2017articles.csv > jan17no_headers.csv 

其中的“1 d”選項(xiàng)要求sed刪除第一行。

七、cut

了解了如何刪除行,那么我們?cè)撊绾蝿h除列?或者說(shuō)如何只選定某一列?下面我們嘗試為之前生成的列表創(chuàng)建一份新的作者清單。

  1. $ cut -d',' -f3 jan17no_headers.csv > authors.txt 

在這里,通過(guò)cut與-d相配合代表著我們需要第三列(-f3),并將結(jié)果發(fā)送至名為authors.txt的新文件。

八、uniq

作者清單已經(jīng)完成,但我們要如何知悉其中包含多少位不同的作者?每位作者又各自編寫(xiě)了多少篇文章?這里使用uniq。下面我們對(duì)文件進(jìn)行sort排序,找到唯一值,而后計(jì)算每位作者的文章數(shù)量,并用結(jié)果替換原本內(nèi)容。

  1. sort authors.txt | uniq -c > authors.txt 

現(xiàn)在已經(jīng)可以看到每位作者的對(duì)應(yīng)文章數(shù),下面檢查最后三行以確保結(jié)果正確。

  1. $ tail -n3 authors-sorted.txt  
  2. 1 Tracy Miranda 
  3. 1 Veer Muchandi 
  4. 3 VM (Vicky) Brasseur 

九、awk

最后讓我們了解最后一款工具,awk。awk是一款出色的替換性工具,當(dāng)然其功能遠(yuǎn)不止如此。下面我們重新回歸1月12日文章列表TSV文件,利用awk創(chuàng)建新列表以標(biāo)明各篇文章的作者以及各作者編寫(xiě)的具體字?jǐn)?shù)。

  1. $ awk -F "\t" '{print $3 " " $NF}' jan20only.tsv  
  2. Kushal Das 690  
  3. D Ruth Bavousett 218  
  4. Jason Baker 214  
  5. Tracy Miranda 1007 

其中的-F "\t"用于告知awk目前處理的是由tab分隔的數(shù)據(jù)。在大括號(hào)內(nèi),我們?yōu)閍wk提供執(zhí)行代碼。$3代表要求其將輸出第三行,而$NF則代表輸出最后一行(即‘字段數(shù)’的縮寫(xiě)),并在兩項(xiàng)結(jié)果間添加兩個(gè)空格以進(jìn)行明確劃分。

雖然這里列舉的例子規(guī)模較小,看似不必使用上述工具解決,但如果將范圍擴(kuò)大到包含93000行的文件,那么它顯然很難利用電子表格程序進(jìn)行處理。

利用這些簡(jiǎn)單的工具與小型腳本,大家可以避免使用數(shù)據(jù)庫(kù)工具并輕松完成大量數(shù)據(jù)統(tǒng)計(jì)工作。無(wú)論您是專業(yè)人士還是業(yè)余愛(ài)好者,它的作用都不容忽視。

原文標(biāo)題:9command-line tools for data analysis in Linux,作者:Jason Baker

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO.com
相關(guān)推薦

2014-07-31 10:09:12

Linux命令歸檔工具

2021-08-25 10:55:43

Linux命令工具

2014-02-12 13:30:16

Linux命令行終端工具

2016-10-20 09:57:58

Linux轉(zhuǎn)換工具

2019-10-11 11:36:27

Windowscmd命令行工具

2019-10-10 16:13:55

WindowsLinuxWindows 10

2020-03-30 12:57:50

Linux命令行Markdown

2018-04-23 08:45:05

Linux命令行

2018-07-10 14:29:05

Linux命令行

2022-04-05 00:18:33

工具終端命令行

2022-07-13 08:21:38

開(kāi)源命令行工具Linux

2019-12-10 10:03:18

Linux命令行工具

2009-12-09 09:25:52

Linux命令行svn命令

2010-06-01 19:14:53

SVN命令行

2009-08-11 09:58:22

Linux命令行Linux命令svn命令

2010-02-04 15:17:48

Linux wget

2018-05-15 08:40:40

Linux命令數(shù)學(xué)運(yùn)算

2019-08-27 10:32:01

Linux操作系統(tǒng)Windows

2022-10-18 10:00:09

Linuxtcpdump命令

2015-07-29 10:34:50

Linux系統(tǒng)命令行工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 在线观看一区 | 色免费在线视频 | 亚洲精品一区二区三区在线 | 伊人狠狠 | 亚洲影音先锋 | 久久精品国产一区二区 | 男女激情网站免费 | 欧美午夜视频 | 国产日韩欧美一区二区在线播放 | 色婷婷激情综合 | 中文av电影 | 国产亚洲精品综合一区 | 国产精品国产a | 国产无套一区二区三区久久 | 一区二区三区免费看 | 色爱综合网 | 久久精品国产一区二区三区不卡 | 黑人精品欧美一区二区蜜桃 | 精品av| 国产精品视频一二三区 | 一本一道久久a久久精品综合蜜臀 | 一区二区福利视频 | 欧美一区二区三区在线观看 | 欧美精品99 | 亚洲精品二区 | 免费亚洲婷婷 | 日韩欧美手机在线 | 免费观看色 | www.天天操 | 成人午夜精品 | 国产精品久久久久一区二区三区 | 欧美一区二区三区在线 | 夜色www国产精品资源站 | 亚洲不卡视频 | 国产精品永久免费观看 | 手机在线一区二区三区 | 91精品国产91久久久久久最新 | 成人久久久久 | 欧美男人天堂 | 日韩在线小视频 | a在线观看免费 |