linux的cut

韓師學子--胖佳發表於2019-03-02

                          linux的cut

 

轉載:https://blog.csdn.net/jb19900111/article/details/17756231

linux中擷取字串cut命令用法簡介:
 

如果不指定 File 引數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。

主要引數
-b :以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 -n 標誌。
-c :以字元為單位進行分割。
-d :自定義分隔符,預設為製表符。
-f  :與-d一起使用,指定顯示哪個區域。
-n :取消分割多位元組字元。僅和 -b 標誌一起使用。如果字元的最後一個位元組落在由 -b 標誌的 List 引數指示的<br />範圍之內,該字元將被寫出;否則,該字元將被排除。

例子:

shell>> cat fileName
test2
this is a test content

-c 和 -f 引數可以跟以下子引數:
m 第m個字元或欄位
m- 從第m個字元或欄位到檔案結束
-n 從第1個到第n個字元或欄位
m-n 從第m個到第n個字元或欄位

-c m-n 表示顯示每一行的第m個字元到第n個字元。例如:

shell>> cut -c1-6 fileName ## print 每行 開頭算起前 6 個字元
test2
this i

如果檔案內容為:
liubi 23 140004

cut -c 1-5,10-14 fileName
liubi14000


-f m-n 表示顯示第m欄到第n欄(使用tab分隔)。例如:

# cut -f 1,3 fileName
liubi 23 140004

如果遇到空格和製表符時,怎麼分辨呢?
有時候製表符確實很難辨認,有一個方法可以看出一段空格到底是由若干個空格組成的還是由一個製表符組成的。
vim tab_space.txt

​​​​​​​this is tab finish.
this is several space      finish.

檢視

[rocrocket@rocrocket programming]$ sed -n l tab_space.txt
this is tab\tfinish.$
this is several space      finish.$

如果是製表符(TAB),那麼會顯示為\t符號,如果是空格,就會原樣顯示。
通過此方法即可以判斷製表符和空格了。
注意,上面sed -n後面的字元是L的小寫字母哦,不要看錯。
​​​​​​​

我們經常會遇到需要取出分欄位的檔案的某些特定欄位,例如 /etc/password就是通過":"分隔各個欄位的。可以通過cut命令來實現。例如,我們希望將系統賬號名儲存到特定的檔案,就可以:
cut -d: -f 1 /etc/passwd > /tmp/users
-d用來定義分隔符,預設為tab鍵,-f表示需要取得哪個欄位
如:
使用|分隔
cut -d’|’ -f2 1.test>2.test
使用:分隔
cut -d’:’ -f2 1.test>2.test

相關文章