Linux成長之路(六)——簡單的文本處理和數據流重定向

簡單的文本處理

這一節我們將介紹這幾個命令tr(注意不是tar),col,join,paste。實際這一節是上一篇關於能實現管道操作的命令的延續,所以我們依然將結合管道來熟悉這些命令的使用。

  • 【tr】命令
    tr命令可以用來刪除一段文本信息中的某些文字。或者將其進行轉換。
    使用方法:
    tr [option]…SET1[SET2]
    這裏寫圖片描述
    這裏寫圖片描述

  • 【col】命令
    col命令可以將Tab換成對等數量的空格鍵,或者反轉這個操作。
    使用方式:col[option]
    這裏寫圖片描述

實驗:
1、這裏寫圖片描述

2、這裏寫圖片描述

3、這裏寫圖片描述

  • 【join】命令
    這個命令就是用於將兩個文件中包含相同內容的那一行合併在一起。
    使用方式: join [option] … file1 file2
    這裏寫圖片描述

    實驗:
    相同行被合成一行輸出:
    這裏寫圖片描述

    這裏寫圖片描述

  • 【paste】命令
    paste這個命令與join 命令類似,它是在不對比數據的情況下,簡單地將多個文件合併一起,以Tab隔開。
    使用方法:paste [option] file…
    這裏寫圖片描述

    這裏寫圖片描述

數據流重定向

你可能對重定向這個概念感到些許陌生,但你應該在前面的課程中多次見過>或>>操作了,並知道他們分別是將標準輸出導向一個文件或追加到一個文件中。這其實就是重定向,將原本輸出到標準輸出的數據重定向到一個文件中,因爲標準輸出(/dev/stdout)本身也是一個文件,我們將命令輸出導向另一個文件自然也是沒有任何問題的。
回顧>與>>符號:
這裏寫圖片描述

  • 簡單的重定向
    Linux 默認提供了三個特殊設備,用於終端的顯示和輸出,分別爲stdin(標準輸入,對應於你在終端的輸入),stdout(標準輸出,對應於終端的輸出),stderr(標準錯誤輸出,對應於終端的輸出)。
    這裏寫圖片描述
    說明:文件描述符:文件描述符在形式上是一個非負整數。實際上,它是一個索引值,指向內核爲每一個進程所維護的該進程打開文件的記錄表。當程序打開一個現有文件或者創建一個新文件時,內核向進程返回一個文件描述符。在程序設計中,一些涉及底層的程序編寫往往會圍繞着文件描述符展開。但是文件描述符這一概念往往只適用於 UNIX、Linux 這樣的操作系統。
    命令的輸入可以是標準輸入也可以是文件,命令的輸出可以是標準輸出也可以是文件。
    這裏寫圖片描述
    注意:不要將管道和重定向混淆,管道默認是連接前一個命令的輸出到下一個命令的輸入,而重定向通常是需要一個文件來建立兩個命令的連接。

  • 標準錯誤重定向
    這裏寫圖片描述

    這裏寫圖片描述

  • 使用【tee】命令同時重定向到多個文件
    經常你可能還有這樣的需求,除了將需要將輸出重定向到文件之外也需要將信息打印在終端,那麼你可以使用tee命令來實現:
    這裏寫圖片描述

  • 永久重定向
    我們前面的重定向操作都只是臨時性的,即只對當前命令有效,那如何做到“永久”有效呢,比如在一個腳本中,你需要某一部分的命令的輸出全部進行重定向,難道要讓你在每個命令上面加上臨時重定向的操作嘛,當然不需要,我們可以使用exec命令實現“永久”重定向。exec命令的作用是使用指定的命令替換當前的 Shell,及使用一個進程替換當前進程,或者指定新的重定向:
    這裏寫圖片描述
    說明:1>bash.txt中1是文件描述符,表示標準輸出,上文已經說過。

  • 創建輸出文件描述符
    默認在 Shell 中可以有9個打開的文件描述符,上面我們使用了也是它默認提供的0,1,2號文件描述符,另外我們還可以使用3-8的文件描述符,只是它們默認沒有打開而已,你可以使用下面命令查看當前 Shell 進程中打開的文件描述符:
    這裏寫圖片描述

    創建文件描述符重定向:
    這裏寫圖片描述
    實驗一下:
    這裏寫圖片描述

  • 關閉文件描述符
    這裏寫圖片描述

  • 完全屏蔽命令的輸出
    在 Linux 中有一個被成爲“黑洞”的設備文件,所有導入它的數據都將被“吞噬”。
    這裏寫圖片描述


參考文獻:https://www.shiyanlou.com/courses/1
注:轉載請註明原文出處:
作者:CUG_UESTC
出處:http://blog.csdn.net/qq_31192383/article/details/53241089

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章