目錄
一、head與tail" >一、head與tail
二、wc" >二、wc
三、grep" >三、grep
四、tr" >四、tr
五、sort" >五、sort
六、sed" >六、sed
七、cut" >七、cut
八、uniq" >八、uniq
九、awk" >九、awk
首頁 系統教程 Linux Linux資料分析必備:9個實用指令大全

Linux資料分析必備:9個實用指令大全

Feb 14, 2024 pm 08:18 PM
linux linux教程 linux系統 linux指令 csv文件 shell腳本 嵌入式linux linux入門 linux學習

數據分析是當今最熱門的技能之一,它可以幫助我們從海量的數據中提取有價值的信息,支持決策和創新。但是,要進行有效的數據分析,我們不僅需要掌握相關的理論和方法,還需要熟練使用一些工具和平台。 Linux系統是資料分析師常用的作業系統之一,它提供了許多強大且靈活的命令,可以幫助我們處理各種資料問題。本文將為你介紹Linux系統下資料分析常用的9個指令,以及它們的功能和用法。無論你是Linux新手還是老手,這些指令都會讓你的數據分析工作更有效率、更方便。

Linux資料分析必備:9個實用指令大全

一、head與tail

首先,讓我們先從檔案處理開始。文件中有什麼內容?其格式如何?大家可以使用cat指令在終端機中顯示文件,但其顯然不適合處理內容較長的文件。

輸入head與tail,二者能夠完整顯示文件中的指定行數內容。如果大家未指定行數,則預設顯示其中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/1
7/1/what-your-open-source-new-years-resolution,,186
登入後複製

在最後三行中,我能夠找到日期、作者姓名、標題以及其他一些資​​訊。不過由於缺少列頭,我不清楚各列的具體意義。以下查看各列的具體標題:

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

現在一切都非常明確,我們可以看到發布日期、內容類型、作者、標題、提交次數、相關URL、各文章標籤以及字數。

二、wc

#但如果需要分析數百甚至上千篇文章,又該如何處理?這裡就要使用wc命令了——其為“字數”一詞的縮寫。 wc能夠對檔案的位元組、字元、單字或行數進行計數。在本範例中,我們希望了解文章中的行數。

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

本文件共有93行,考慮到第一行中包含文件標題,因此可以推測此文件是一份包含92篇文章的清單。

三、grep

#下面提出新的問題:其中有多少文章與安全主題有關?為了實現目標,我們假定需要的文章會在標題、標籤或其他位置提到安全這一字眼。這時,grep工具可用於透過特定字元搜尋檔案或實現其他搜尋模式。這是一款極為強大的工具,因為我們甚至能夠利用正規表示式建立極為精確的匹配模式。不過這裡,我們只需要尋找一條簡單的字串。

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标记(告知grep不区分大小写),再加我们希望搜索的模式,最后是我们所搜索的目标文件的

位置。最后我们找到了
登入後複製

4篇安全相關文章。如果搜尋的範圍更具體,我們可以使用pipe——它能夠將grep同wc指令加以結合,用以了解其中有多少行提到了安全內容。

$ grep -i "security" jan2017articles.csv | wc -l 4
登入後複製

這樣,wc會提取grep指令的輸出結果並將其作為輸入內容。很明顯,這種結合再加上一點shell腳本,終端將立即變成一個強大的資料分析工具。

四、tr

在多數分析場景下,我們都會面對CSV檔案-但我們該如何將其轉換為其他格式以實現不同應用方式?這裡,我們將其轉化為HTML形式以透過表格進行資料使用。 tr指令可協助大家達成此目標,它可將一類字元轉換為另一類。同樣的,大家也可以配合pipe指令實現輸出/輸入對接。

下面,我們試試另一個多部分範例,即建立一個TSV(即製表符分隔值)文件,其中只包含發表於1月20日的文章。

=$ grep "20 Jan 2017" jan2017articles.csv | tr ',' '/t' > jan20only.tsv
登入後複製

首先,我們利用grep進行日期查詢。我們將此結果pipe至tr指令,並利用後者將全部逗號替換為tab(表示為’/t’)。但結果去哪了?這裡我們使用〉字元將結果輸出為新檔案而非螢幕結果。如此一來,我們可以dqywjan20only.tsv檔案中一定包含預期的資料。

$ 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

如果我们先要找到包含信息最多的特定列,又该如何操作?假设我们需要了解哪篇文章包含最长的新文章列表,那么面对之前得出的1月20日文章列表,我们可以使用sort命令对列字数进行排序。在这种情况下,我们并不需要使用中间文件,而可以继续使用pipe。不过将长命令链拆分成较短的部分往往能够简化整个操作过程。

  1. ‘/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

以上是一条长命令,我们尝试进行拆分。首先,我们使用sort命令对字数进行排序。-nr选项告知sort以数字排序,并将结果进行反向排序(由大到小)。此后的-t则告知其中的分隔符为。其中的要求此shell为一条需要处理的字符串,并将/n返回为tab。而-k8部分则告知sort命令使用第八列,即本示例中进行字数统计的目标列。

最后,输出结果被pipe至head,处理后在结果中显示此文件中包含最多字数的文章标题。

六、sed

大家可能还需要在文件中选择特定某行。这里可以使用sed。如果希望将全部包含标题的多个文件加以合并,并只为整体文件显示一组标题,即需要清除额外内容; 或者希望只提取特定行范围,同样可以使用sed。另外,sed还能够很好地完成批量查找与替换任务。

下面立足之前的文章列表创建一个不含标题的新文件,用于同其他文件合并(例如我们每月都会定期生成某个文件,现在需要将各个月份的内容进行合并)。

  1. $ sed ‘1 d’ jan2017articles.csv > jan17no_headers.csv

其中的“1 d”选项要求sed删除第一行。

七、cut

了解了如何删除行,那么我们该如何删除列?或者说如何只选定某一列?下面我们尝试为之前生成的列表创建一份新的作者清单。

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

在这里,通过cut与-d相配合代表着我们需要第三列(-f3),并将结果发送至名为authors.txt的新文件。

八、uniq

作者清单已经完成,但我们要如何知悉其中包含多少位不同的作者?每位作者又各自编写了多少篇文章?这里使用unip。下面我们对文件进行sort排序,找到唯一值,而后计算每位作者的文章数量,并用结果替换原本内容。

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

现在已经可以看到每位作者的对应文章数,下面检查最后三行以确保结果正确。

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

九、awk

最后让我们了解最后一款工具,awk。awk是一款出色的替换性工具,当然其功能远不止如此。下面我们重新回归1月12日文章列表TSV文件,利用awk创建新列表以标明各篇文章的作者以及各作者编写的具体字数。

  1. $ awk -F “/t” ‘{print NF}’ jan20only.tsv
  2. # Kushal Das 690
  3. D Ruth Bavousett 218
  4. # Jason Baker 214
  5. Tracy Miranda 1007

#其中的-F “/t”用於告知awk目前處理的是由tab分隔的資料。在大括號內,我們為awk提供執行程式碼。 代表要求其將輸出第三行,而NF則代表輸出最後一行(即'字段數'的縮寫),並在兩項結果間添加兩個空格以進行明確劃分。

雖然這裡列舉的例子規模較小,看似不必使用上述工具解決,但如果將範圍擴大到包含93000行的文件,那麼它顯然很難利用電子表格程式進行處理。

利用這些簡單的工具與小型腳本,大家可以避免使用資料庫工具並輕鬆完成大量資料統計工作。無論您是專業人士還是業餘愛好者,它的作用都不容忽視。

透過本文,你已經了解Linux系統下資料分析常用的9個指令,以及它們的功能和用法。這些命令涵蓋了檔案操作、目錄管理、輸出重定向、管道、連結等方面,可以幫助你在Linux系統下進行各種資料處理和分析。當然,這些命令只是Linux系統提供的眾多命令中的一部分,如果你想深入學習Linux系統和數據分析,還需要不斷地探索和實踐。希望這篇文章能對你的學習和工作有所幫助,也歡迎你分享你自己使用或發現的其他實用的Linux指令。

以上是Linux資料分析必備:9個實用指令大全的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1324
25
PHP教程
1272
29
C# 教程
1251
24
Linux體系結構:揭示5個基本組件 Linux體系結構:揭示5個基本組件 Apr 20, 2025 am 12:04 AM

Linux系統的五個基本組件是:1.內核,2.系統庫,3.系統實用程序,4.圖形用戶界面,5.應用程序。內核管理硬件資源,系統庫提供預編譯函數,系統實用程序用於系統管理,GUI提供可視化交互,應用程序利用這些組件實現功能。

git怎麼查看倉庫地址 git怎麼查看倉庫地址 Apr 17, 2025 pm 01:54 PM

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

notepad怎麼運行java代碼 notepad怎麼運行java代碼 Apr 16, 2025 pm 07:39 PM

雖然 Notepad 無法直接運行 Java 代碼,但可以通過借助其他工具實現:使用命令行編譯器 (javac) 編譯代碼,生成字節碼文件 (filename.class)。使用 Java 解釋器 (java) 解釋字節碼,執行代碼並輸出結果。

sublime寫好代碼後如何運行 sublime寫好代碼後如何運行 Apr 16, 2025 am 08:51 AM

在 Sublime 中運行代碼的方法有六種:通過熱鍵、菜單、構建系統、命令行、設置默認構建系統和自定義構建命令,並可通過右鍵單擊項目/文件運行單個文件/項目,構建系統可用性取決於 Sublime Text 的安裝情況。

Linux的主要目的是什麼? Linux的主要目的是什麼? Apr 16, 2025 am 12:19 AM

Linux的主要用途包括:1.服務器操作系統,2.嵌入式系統,3.桌面操作系統,4.開發和測試環境。 Linux在這些領域表現出色,提供了穩定性、安全性和高效的開發工具。

laravel安裝代碼 laravel安裝代碼 Apr 18, 2025 pm 12:30 PM

要安裝 Laravel,需依序進行以下步驟:安裝 Composer(適用於 macOS/Linux 和 Windows)安裝 Laravel 安裝器創建新項目啟動服務訪問應用程序(網址:http://127.0.0.1:8000)設置數據庫連接(如果需要)

git軟件安裝 git軟件安裝 Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

VSCode怎麼用 VSCode怎麼用 Apr 15, 2025 pm 11:21 PM

Visual Studio Code (VSCode) 是一款跨平台、開源且免費的代碼編輯器,由微軟開發。它以輕量、可擴展性和對眾多編程語言的支持而著稱。要安裝 VSCode,請訪問官方網站下載並運行安裝程序。使用 VSCode 時,可以創建新項目、編輯代碼、調試代碼、導航項目、擴展 VSCode 和管理設置。 VSCode 適用於 Windows、macOS 和 Linux,支持多種編程語言,並通過 Marketplace 提供各種擴展。它的優勢包括輕量、可擴展性、廣泛的語言支持、豐富的功能和版

See all articles