Skip to content

AI STUDIO Taiwan

台 灣 人 工 智 慧 與 資 料 科 學 研 究 室

  • About 關於本站
  • 專欄列表
  • Taiwan NLP.台灣自然語言處理與人工智慧交流社( 1.8萬位成員)
  • 關於 Taiwan NLP 社群

【Linux 基礎教學】02 pipeline 匿名管道(管線) 的串接

Posted on 2023 年 1 月 6 日2023 年 3 月 28 日 By 楊 明翰 在〈【Linux 基礎教學】02 pipeline 匿名管道(管線) 的串接〉中尚無留言
Linux 入門
Print Friendly, PDF & Email

pipeline是Linux體系裡處理資料的核心觀念,其主要作用是把指令或是程式串起來建立一連串的資料處理流程,透過這種方式能用組裝的把單一的指令串起來組成一段具有不同功能的流程,如果足夠熟悉的話,很多資料清理都可以這些既有的指令快速搭建出我們想要的功能。

稍微複雜一點的作法是把一些pipeline和邏輯判斷組織起來,變成一隻shell script 腳本。而實務上很多輕量的資處理工作都是類似這樣簡單搭建的。pipeline的符號為「 | 」,會創造一個匿名管道Anonymous Pipes,通常會搭配輸入和輸出重定向的符號「 < 」以及「 > 」一起使用。

匿名管線符號「 | 」語意是會把左側指令或程式的標準輸出丟給右側作為標準輸入,舉例來說像是:

cat test.txt

會把 test.txt的內容讀到標準輸出上,如果我們希望計算這個檔案的行數,則可以搭配使用「 wc -l 」指令來完成。

wc是word count ,是Linux計算字數的內建指令,當然它本身也是一隻程式,通常位於/usr/bin/wc(想知道它的路徑可以下whereis wc來找出來),加上參數「 -l 」就能計算行數,未指定檔名的情況會從標準輸入。要把「cat」的標準輸出給「wc -l」作為輸入,則可以用pipeline的符號「 | 」搭起來變成:

cat test.txt | wc -l

雖然單純以wc自己寫成「wc -l test.txt」同樣可以完成任務,但一旦流程更複雜,我們就需要用這個方式來組合出所需的流程。

再舉個例子,像如果我們想要統計當前目錄下所有.txt檔出現”jo”的行數為何,就可以拆解成三個步驟:1.用「 cat 」把txt檔拼接起來,2.用「 grep 」把”jo”出現的行撈出來,3.用wc統計行數,這三步驟則是用「 | 」,搭起來變成:

cat *.txt | grep "jo"  | wc -l

再簡潔一點可用grep的參數「-c 」計算數量

cat *.txt | grep "jo" -c

再更複雜一點的,從txt檔案中以空白切分,並統計詞頻後排序輸出成csv

cat  *.txt  | tr ' ' '\n' |  sort | uniq -c |sort -r | awk -v OFS=, '{print $2,$1}' > output.csv

這裡的流程拆解如下:

首先用「cat」把當前目錄下的txt合併,用「tr」把空格換成換行,「sort」排序把相同的字母排一起,「uniq -c 」計算單詞數量,再用「sort -r 」按照大到小排序,到這一步其實已經差不多了,只剩下修改格式成csv,用「awk」改一下順序變成先單詞再數字,並且以逗號分隔,然後才用重定向輸出到檔案「 output.csv」。雖然看起來稍微複雜,但只要熟悉指令的組成,很多例行公事都能用類似的方式快速解決。像是唸一唸咒語,電腦就能幫忙包辦大小事。

類似這樣的作法很常出現在複雜度較低的資料處理系統上,有的會把簡單的需求用shell script以pipeline來搭建,而那些較為複雜的再用Python等程式語言撰寫。

✔ 幫我們按個喜歡和分享,支持我們

平均分數 0 / 5. 給分人數 0

尚未有評分,請幫我評分歐

楊 明翰
楊 明翰

是一名八年級中段班的創業者與資料科學家

“With belief and action, we change the world.”

憑藉信念與行動,我們改變世界💪

更多關於站長

本文允許重製、散布、傳輸以及修改,但不得為商業目的之使用

使用時必須註明出處自:楊明翰 , 台灣人工智慧與資料科學研究室 https://aistudio.tw

標籤: pipeline 統計詞頻

文章導覽

❮ Previous Post: 【Linux 基礎教學】01 常用路徑導航(Navigation Commands)與檔案操作命令 cd、ls、mkdir、pwd、cp、tree
Next Post: 【Linux 基礎教學】03 shell Script 變數 ❯

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

更多AI相關資訊,歡迎加入站長的粉絲團

Facebook

閱讀視覺風格選擇


實驗袍白 / 適合資料分析師、科學家
終端機黑 / 適合黑客、電腦工程師

專欄列表

  • Artificial intelligence 人工智慧 (3)
    • HPC 高效能運算 (1)
    • PyTorch (1)
    • 從頭實作AI (1)
  • Backend 後端開發 (1)
  • C++ 應用 (2)
  • Community 社群介紹 (1)
  • Data Engineering 資料工程與訊號分析 (1)
  • Java 開發與教學 (2)
  • Linux 入門 (5)
  • NLP/NLU 自然語言處理與理解 (4)
  • Philosophy 站長哲學 (5)
  • Python 開發與教學 (7)
    • Python Flask 網站開發 (1)
    • Python 中階 (1)
    • Python 入門 (5)
  • Slides會議簡報 (12)
  • Start-up 創新創業 (7)
  • 機器學習數學基礎 (1)
  • 私人筆記手稿 (4)
  • 線上教學目錄 (4)

近期發布

  • 【Linux 應用】使用Zenity零成本開發的多開瀏覽器管理器
  • 【Start-up 創新創業】如何選擇創業題目
  • 【自然語言處理與理解】Llama-2大語言模型CPU版本使用
  • 【個人演講】AI EXPO 2023 ChatGPT以及LLM
  • 【自訓課程】NGS 次世代基因體資料科學 課程

討論

尚無留言可供顯示。

年份彙整

  • 2023 (9)
  • 2022 (4)
  • 2021 (6)
  • 2020 (14)
  • 2019 (8)
  • 2018 (10)
  • 2017 (2)
  • 2016 (4)
  • 2015 (2)

ChatGPT GRU HPC llama-cpp LLM Log4J LSTM Node.js SMO SVM Zenity 人工智慧 人格特質 出資 創新 創業 多語言 多開瀏覽器 大語言模型 感知機 戰鬥 技術 技術合夥 技術股 撰寫程式 新創 新手 新聞輿情 最佳化 機器學習 死亡 現代C++ 系統日誌 股東權益 能力 證明 變數 負債 資本 資產負債表 長短期記憶 霍普菲爾 類神經網 類神經網路 風險

調整字型大小

A 縮小字型大小。 A 重設字型大小。 A 放大字型大小。

Copyright © 2023 AI STUDIO Taiwan.
聯絡我們 : whuang022@gmail.com
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Theme: Oceanly by ScriptsTown