(1)其語(yǔ)法格式為:
cut [-bn] [file] 或 cut [-c] [file] 或 cut [-df] [file]
使用說(shuō)明
cut 命令從文件的每一行剪切字節(jié)、字符和字段并將這些字節(jié)、字符和字段寫至標(biāo)準(zhǔn)輸出。
如果不指定 File 參數(shù),cut 命令將讀取標(biāo)準(zhǔn)輸入。必須指定 -b、-c 或 -f 標(biāo)志之一。
主要參數(shù)
-b :以字節(jié)為單位進(jìn)行分割。這些字節(jié)位置將忽略多字節(jié)字符邊界,除非也指定了 -n 標(biāo)志。
-c :以字符為單位進(jìn)行分割。
-d :自定義分隔符,默認(rèn)為制表符。
-f :與-d一起使用,指定顯示哪個(gè)區(qū)域。
-n :取消分割多字節(jié)字符。僅和 -b 標(biāo)志一起使用。如果字符的最后一個(gè)字節(jié)落在由 -b 標(biāo)志的 List 參數(shù)指示的<br />范圍之內(nèi),該字符將被寫出;否則,該字符將被排除。
(2)cut一般以什么為依據(jù)呢? 也就是說(shuō),我怎么告訴cut我想定位到的剪切內(nèi)容呢?
cut命令主要是接受三個(gè)定位方法:
第一,字節(jié)(bytes),用選項(xiàng)-b
第二,字符(characters),用選項(xiàng)-c
第三,域(fields),用選項(xiàng)-f
(3)以“字節(jié)”定位
舉個(gè)例子吧,當(dāng)你執(zhí)行ps命令時(shí),會(huì)輸出類似如下的內(nèi)容:
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
如果我們想提取每一行的第3個(gè)字節(jié),就這樣:
[rocrocket@rocrocket programming]$ who|cut -b 3
c
c
c
(4) 如果“字節(jié)”定位中,我想提取第3,第4、第5和第8個(gè)字節(jié),怎么辦?
-b支持形如3-5的寫法,而且多個(gè)定位之間用逗號(hào)隔開(kāi)就成了??纯蠢影桑?/p>
[rocrocket@rocrocket programming]$ who|cut -b 3-5,8
croe
croe
croe
但有一點(diǎn)要注意,cut命令如果使用了-b選項(xiàng),那么執(zhí)行此命令時(shí),cut會(huì)先把-b后面所有的定位進(jìn)行從小到大排序,然后再提取。可不能顛倒定位的順序哦。這個(gè)例子就可以說(shuō)明這個(gè)問(wèn)題:
[rocrocket@rocrocket programming]$ who|cut -b 8,3-5
croe
croe
croe
(5) 還有哪些類似“3-5”這樣的小技巧,列舉一下吧!
[rocrocket@rocrocket programming]$ who
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)
[rocrocket@rocrocket programming]$ who|cut -b -3
roc
roc
roc
[rocrocket@rocrocket programming]$ who|cut -b 3-
crocket :0 2009-01-08 11:07
crocket pts/0 2009-01-08 11:23 (:0.0)
crocket pts/1 2009-01-08 14:15 (:0.0)
想必你也看到了,-3表示從第一個(gè)字節(jié)到第三個(gè)字節(jié),而3-表示從第三個(gè)字節(jié)到行尾。如果你細(xì)心,你可以看到這兩種情況下,都包括了第三個(gè)字節(jié)“c”。
如果我執(zhí)行who|cut -b -3,3-,你覺(jué)得會(huì)如何呢?答案是輸出整行,不會(huì)出現(xiàn)連續(xù)兩個(gè)重疊的c的??矗?/p>
[rocrocket@rocrocket programming]$ who|cut -b -3,3-
rocrocket :0 2009-01-08 11:07
rocrocket pts/0 2009-01-08 11:23 (:0.0)
rocrocket pts/1 2009-01-08 14:15 (:0.0)