2010/07/30

【Linux】初心者的學習筆記(7)

鳥哥:Linux基礎文件/ 第十一章、認識與學習 BASH


圖6.1.1 是pipe的功能
pipe 就是|(跟\在同一顆按鍵上的|)
/out有三種 stdin , stdout 跟 stderr (stderr = standard error output)
圖上面完全沒有stderr的去處,
有stderr出現的時候,就會直接輸出到terminal上或console上,不會經過|導到下一個指令。
stderr這個部份會直接出現在terminal裡,不會經過|傳給下一個指令,
只有stdout會傳給下一個指令去處理。

減號的用途在pipe裡面,是可以取代stdin跟stdout的,
有時候指令裡面一定要寫它所接收的檔名,在pipe處理的時候,從stdin的資料並不會有檔名,
這時就是用 - 來當成檔名,同理可以當成輸出。

其他一些常用在pipe處理資料時的指令:
*cut -> cut可以截取整行資料的某一段, 可能是第幾到第幾個字 或是用某個符號當分隔記號 取出第幾段
cut基本用法有兩種,更基本的話就直接只加-f,預設的分隔字元是空白。
範例一就是用;當分隔 取出第五段
範例二就是用第幾個字去取出來,
如:cut c 12- 。12後面的"-",就是從第12個字開始之後都取的意思。

*grep -> 就是只抓取含有某字串的行數
如果說一大堆資料理面,只要看包含有abc這個字串的那行資料,然後再從包含abc的資料裡面抽出某幾欄,
就要用 grep之後再cut。
grep要記得讀參數主要是: -i的話可以忽略大小寫 ,-v是相反的意思
當取出有用的資料以後,可能順序是亂的;
或是要有特定的處理,這時候還有另外的指令可以作:排序 sort
sort最常用的參數是:-n 用數字的方式排序,-r 反向排序
如果要排序的欄位不是第一欄的話,要加上 -t(分隔符號) 跟 -k(第幾欄) 來指定。

*uniq -> 是將重複的資料消去,
但是這些資料要先排序過,因為它只會比較前後的資料,不會從整體去比較。
排序過之後可能會有一堆重複的資料排在一起,用uniq就可以讓重複的資料只顯示一筆,或是去計算這個資料有幾筆。
如果只用uniq的話,就只是資料都變沒有重複的。
而用uniq -c時,就是在不重複的資料前,顯示這個資料重複的筆數。
或者說 使用uniq -c之後,會出現兩欄資料,左邊會是右邊這個資料出現的累計次數。

*wc -> 可以計算資料的字數跟行數,
wc -l就是計算行數。
直接下wc的話會出現:行數、字數、字元數,
這邊的字數是word數量 字元數是character數量。

*tee -> 像圖6.3.1一樣,tee就是輸出在螢幕上,另外還可以寫入檔案。

*tr -> 可以取代特定文字,或是刪掉特定的文字。
裡面可以用上shell的正規表示式,像是[ ] 這種用法,
也是轉換字元的指令,-x就是把tab換成對等的空白,通常應該是4個。

*join -> 是把兩個檔案裡面有相同欄位的行,組合在一起。

*paste -> 就是貼上,跟join很像,但是不一樣。

*split -> 是拿來分割檔案用的,
可以根據行數把一個大檔切成很多小檔,或是根據檔案大小去切割。

0 意見: