linux-cut 命令詳解!

cut命令可以從一個文本文件或者文本流中提取文本列。 命令用法:       cut -b list [-n] [file ...]       cut -c list [file ...]       cut -f list [-d delim][-s][file ...]  l      上面的-b、-c、-f分別表示字節、字符、字段(即byte、character、field);l      list表示-b、-c、-f操作範圍,-n常常表示具體數字;l      file表示的自然是要操作的文本文件的名稱;l      delim(英文全寫:delimiter)表示分隔符,默認情況下爲TAB;l      -s表示不包括那些不含分隔符的行(這樣有利於去掉註釋和標題)上面三種方式中,表示從指定的範圍中提取字節(-b)、或字符(-c)、或字段(-f)。範圍的表示方法:N
 只有第N項
 
N-
 從第N項一直到行尾
 
N-M
 從第N項到第M項(包括M)
 
-M
 從一行的開始到第M項(包括M)
 
-
 從一行的開始到結束的所有項
 下面是實例,先以較簡單的“命令用法”中提及的第二條開始講起: interrupts文件中的字符排列非常齊整,正適合我們切豆腐。 
 但這裏我們只對兩個數字列感興趣,用法如下: 
 
裏面還有一些不需要的內容,精減一下:  合到一起:哇,果然夠帥!!  不相鄰列的截選又應該如何做呢?
這種方式需要事先確定佔多少個字符位置,不僅麻煩,而且容易出錯。  下面的問題該怎麼去做?   這就是第二講:使用cut –f提取文本中的字段。 cut –c主要是用來在固定字符位置或個數的文本文件中提取,對於上面的例子就顯得無能爲力了。仔細觀察,發現passwd文件有個規律,就是以冒號來區分不同的段的文本,於是。。。 怎麼樣,好玩吧~!  繼續,創建一個文本文件,名爲a.txt,名字有點土,湊合着用吧。
A1、B1、C1所代表的行字符之間均以TAB分隔,D1卻是以空格來分開的。   
看到-s的作用了嗎?(因爲第一行不含有任何TAB字符,所以直接被剔除了),而最後一行(即D1行),是以空格區分間距,所以也不合要求。   多了個參數,這個我沒講,只要你的智商比範偉高一點點,就肯定能猜出來啦。^_^  
好了,下面是最後一個用法的講解了: 
  因爲虛擬終端下無法顯示漢字,所以我只好回到圖形下,截圖就成這個白不垃圾的樣子啦,忍忍吧,就快講完了。 在這個文件中,每個漢字都是用半角空格分隔的。   



 

用cut –c已經成功了,下面試試cut –b怎麼樣? 沒有反應,why?
   原因在於漢字本身是雙字節的,cut –c把漢字“我”當成一個字符來處理,而cut –b是以字節來處理,把“我”拆成了兩個字節,結果是字符被“切成兩半”,因此無法正常顯示。  原因找到了,要怎麼辦纔好呢? 


 

it's ok!


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