Linux入門-7 Linux管道、重定向以及文本處理

Linux管道、重定向以及文本處理

開源的一個重要理念:不要重複發明輪子。 不少開源軟件都是現有軟件、代碼、功能的從新組合。 《大教堂與集市》linux

1 Linux多命令協做:管道及重定向

管道和重定向

Linux中,大多數命令都很簡單,每每只實現一個或幾個簡單的功能,咱們能夠將不一樣功能的命令組合在一塊兒使用,以達到完成某個複雜功能的目的。 Linux中,幾乎全部命令的返回都是純文本的,而純文本形式的數據是絕大多數命令的輸入格式,這就讓協做成爲可能。 Linux的命令行爲咱們提供了管道和重定向機制,多命令協做就是經過管道和重定向完成的。正則表達式

  • 命令行shell數據流有如下定義:
名稱 說明 編號 默認
STDIN 標準輸入 0 鍵盤
STDOUT 標準輸出 1 終端
STDERR 標準錯誤 2 終端

命令經過STDIN接收參數或數據,經過STDOUT輸出結果或經過STDERR輸出錯誤。shell

  • 經過管道和重定向能夠控制CLI的數據流
  • 管道一般用來組合不一樣的命令,以實現更復雜的功能
  • 重定向一般用來保存命令的輸出或錯誤信息
分類 關鍵字 定義 例子
重定向 > 將STDOUT重定向到文件(覆蓋) echo "linuxcast.net" > outfile
重定向 >> 將STDOUT重定向到文件(追加) echo "linuxcast.net" >> outfile
重定向 2> 將STDERR重定向到文件(覆蓋) echo "linuxcast.net" 2> outfile
重定向 2>&1 將STDERR與STDOUT結合 echo "linuxcast.net" 2>&1 outfile
重定向 < STDIN grep linuxcast < /etc/passwd
管道 ` ` 將一個命令的STDOUT做爲另外一個命令的STDIN

一個更復雜的例子:查找用戶linuxcast的Video文件,將查找錯誤重定向到null(丟棄) find / -user linuxcast 2> /dev/null | grep Videoless

2 Linux命令行文本處理工具

文件瀏覽

  • cat/more/less/head/tail

基於關鍵字搜索-grep

該命令使用正則表達式搜索指定的純文本文件或純文本(管道)ide

  • -i 忽略大小寫
  • -n 現實結果所在行數(文件)
  • -v 輸出不帶關鍵字的行(反選)
  • -Ax 輸出的時候包含結果所在行以後的指定行數
  • -Bx 輸出的時候包含結果所在行以前的指定行數

基於列處理文本-cut

  • -d 指定分割字符,默認爲TAB
  • -f 指定輸出的列號
  • -c 基於字符進行切割,固定長度

例: cut -d: -f1 /etc/passwd:爲分割符,顯示第一列 grep linuxcast /etc/passwd | cut -d: -f3輸出用戶linuxcast的uid(第三列) cut -c2-6 /etc/passwd第2-6個字符工具

文本統計-wc

  • -l 只統計行數line
  • -w 只統計單詞word
  • -c 只統計字節數
  • -m 只統計字符數

文本排序-sort

  • -r 進行倒敘排序
  • -n 基於數字進行排序
  • -f 忽略大小寫
  • -u 刪除重複行
  • -tc 使用c做爲分隔符分割爲列進行排序
  • -kx 當進行基於指定字符分割爲列的排序時,指定基於哪一個列排序

刪除重複行

  • sort -u 排序時刪除重複行
  • uniq 刪除重複的相鄰行

文本比較-diff

  • -i 忽略大小寫
  • -b 忽略空格數量的改變
  • -u 統一顯示比較信息(通常用以生成patch文件) diff -u linuxcast linuxcast-new > final.patch

檢查拼寫-aspell

  • aspell check linuxcast
  • aspell list < linuxcast

處理文本內容-tr

translateui

  • tr -d 'TMD' < linuxcast 刪除關鍵字
  • tr 'a-z' 'A-Z' < linuxcast 轉換大小寫

搜索替換-sed

使用正則表達式處理文本文件spa

  • sed 's/linux/unix/g' linuxcast 替換linux爲unix,/g所有替換
  • sed '1,50s/linux/unix/g' linuxcast 替換1-50行
  • sed -e 's/linux/unix/g' -e 's/nash/nash_su/g' linuxcast 多個正則表達式
  • sed -f sededit linuxcast 將匹配表達式保存在sededit文件中
相關文章
相關標籤/搜索