Linux下的cut命令詳解

使用權限:所有使用者
用法:cut-cnum1-num2filename
說明:顯示每行從開頭算起num1到num2的文字。
範例:
shell>>catexample
test2
thisistest1
shell>>cut-c1-6example##print開頭算起前6個字元
test2
thisi
-cm-n表示顯示每一行的第m個字元到第n個字元。例如:
---------file-----------
liubi2314000
---------file-----------
#cut-c1-5,10-14file
liubi14000
-fm-n表示顯示第m欄到第n欄(使用tab分隔)。例如:
---------file-----------
liubi2314000
---------file-----------
#cut-f1,3file
liubi14000
-c和-f參數可以跟以下子參數:
m第m個字符或字段
m-從第m個字符或字段到文件結束
m-n從第m個到第n個字符或字段
-n從第1個到第n個字符或字段
我們經常會遇到需要取出分字段的文件的某些特定字段,例如/etc/password就是通過":"分隔各個字段的。可以通過cut命令來實現。例如,我們希望將系統賬號名保存到特定的文件,就可以:
cut-d:-f1/etc/passwd>/tmp/users
-d用來定義分隔符,默認爲tab鍵,-f表示需要取得哪個字段
如:
使用|分隔
cut-d'|'-f21.test>2.test
使用:分隔
cut-d':'-f21.test>2.test
這裏使用單引號或雙引號皆可
有時我們經常會遇到這樣一些問題:有一頁電話號碼薄,上面按順序規則地寫着人名、家庭住址、電話、備註等,此時我們只想取出所有人的名字和其對應的電話號碼,你有幾種方法可以實現呢
確實這種縱向定位的方式用常規辦法難以實現,這時,cut就可以大顯身手了。
What’scut?
子曰:cut命令可以從一個文本文件或者文本流中提取文本列。
命令用法:
cut-blist[-n][file...]
cut-clist[file...]
cut-flist[-ddelim][-s][file...]
l上面的-b、-c、-f分別表示字節、字符、字段(即byte、character、field);
llist表示-b、-c、-f操作範圍,-n常常表示具體數字;
lfile表示的自然是要操作的文本文件的名稱;
ldelim(英文全寫:delimiter)表示分隔符,默認情況下爲TAB;
l-s表示不包括那些不含分隔符的行(這樣有利於去掉註釋和標題)
上面三種方式中,表示從指定的範圍中提取字節(-b)、或字符(-c)、或字段(-f)。
範圍的表示方法:
N
只有第N項
N-
從第N項一直到行尾
N-M
從第N項到第M項(包括M)
-M
從一行的開始到第M項(包括M)
-
從一行的開始到結束的所有項
下面是實例,先以較簡單的“命令用法”中提及的第二條開始講起:
1.jpg
interrupts文件中的字符排列非常齊整,正適合我們切豆腐。
但這裏我們只對兩個數字列感興趣,用法如下:
2.jpg
裏面還有一些不需要的內容,精減一下:
3.jpg
關於正則表達式的使用,請自行查閱相關資料。
合到一起:
4.jpg
哇,果然夠帥!!
不相鄰列的截選又應該如何做呢?
5.jpg
這種方式需要事先確定佔多少個字符位置,不僅麻煩,而且容易出錯。
下面的問題該怎麼去做?
6.jpg
這就是第二講:使用cut–f提取文本中的字段。
cut–c主要是用來在固定字符位置或個數的文本文件中提取,對於上面的例子就顯得無能爲力了。仔細觀察,發現passwd文件有個規律,就是以冒號來區分不同的段的文本,於是。。。
7.jpg
怎麼樣,好玩吧~!
繼續,創建一個文本文件,名爲a.txt,名字有點土,湊合着用吧。
8.jpg
A1、B1、C1所代表的行字符之間均以TAB分隔,D1卻是以空格來分開的。
9.jpg
看到-s的作用了嗎?(因爲第一行不含有任何TAB字符,所以直接被剔除了),而最後一行(即D1行),是以空格區分間距,所以也不合要求。
10.jpg
多了個參數,這個我沒講,只要你認爲自己不傻,就自己猜吧。
好了,下面是最後一個用法的講解了:
11.jpg
因爲虛擬終端下無法顯示漢字,所以我只好回到圖形下,截圖就成這個白不垃圾的樣子啦,忍忍吧,就快講完了。
在這個文件中,每個漢字都是用半角空格分隔的。
13.jpg
用cut–c已經成功了,下面試試cut–b怎麼樣?
12.jpg
沒有反應,why?
原因在於漢字本身是雙字節的,cut–c把漢字“我”當成一個字符來處理,而cut–b是以字節來處理,把“我”拆成了兩個字節,結果是字符被“切成兩半”,因此無法正常顯示。
原因找到了,要怎麼辦纔好呢?
14.jpg
耶!!!搞定。
OK,allisdone。就到這裏吧,休息,休息。。。

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