1. 程式人生 > >Linux下的cut選取命令詳解

Linux下的cut選取命令詳解

轉載地址

定義

正如其名,cut的工作就是“剪”,具體的說就是在檔案中負責剪下資料用的。cut是以每一行為一個處理物件的,這種機制和sed是一樣的

剪下依據

cut命令主要是接受三個定位方法:

第一,位元組(bytes),用選項-b

第二,字元(characters),用選項-c

第三,域(fields),用選項-f

語法格式
cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file]

使用說明
cut 命令從檔案的每一行剪下位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。
如果不指定 File 引數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。

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

[[email protected] etc]# who|cut -b 3-5,8
okee
okee

“位元組”定位中,提取第3,第4、第5和第8個位元組,-b支援形如3-5的寫法,而且多個定位之間用逗號隔開

注意,cut命令如果使用了-b選項,那麼執行此命令時,cut會先把-b後面所有的定位進行從小到大排序,然後再提取。可不能顛倒定位的順序哦。

[[email protected] etc]# who|cut -b 9,3-5
oker
oker

同時還可以用-3表示從第一個位元組到第三個位元組,而3-表示從第三個位元組到行尾

[[email protected] etc]# who|cut -b -3
zoo
zoo
[[email protected] etc]# who|cut -b 3-
okeeper pts/0        2016-08-20 20:04 (192.168.184.1)
okeeper pts/2        2016-08-18 19:25 (192.168.184.1)

這兩種情況下,都是選中第三個位元組,同時出現-3,3-也不會出現重複

[[email protected] etc]# who|cut -b 3-,-3
zookeeper pts/0        2016-08-20 20:04 (192.168.184.1)
zookeeper pts/2        2016-08-18 19:25 (192.168.184.1)

-b是位元組,-c則是字元,注意一點就是:一個空格算一個位元組,一個漢字算三個位元組

複製程式碼

[[email protected] programming]$ cat cut_ch.txt
星期一
星期二
星期三
星期四
[[email protected] programming]$ cut -b 3 cut_ch.txt
�
�
�
�
[[email protected] programming]$ cut -c 3 cut_ch.txt
一
二
三
四
[[email protected] programming]$ cat cut_ch.txt |cut -b 2
�
�
�
�
[[email protected] programming]$ cat cut_ch.txt |cut -nb 2  --當遇到多位元組字元時,可以使用-n選項,-n用於告訴cut不要將多位元組字元拆開。
[[email protected] programming]$ cat cut_ch.txt |cut -nb 1,2,3  --當遇到多位元組字元時,可以使用-n選項,-n用於告訴cut不要將多位元組字元拆開。
星 
星 
星 
星

複製程式碼

為什麼會有“域”的提取呢,因為剛才提到的-b和-c只能在固定格式的文件中提取資訊,而對於非固定格式的資訊則束手無策。這時候“域”就派上用場了。如果你觀察過/etc/passwd檔案,你會發現,它並不像who的輸出資訊那樣具有固定格式,而是比較零散的排放。但是,冒號在這個檔案的每一行中都起到了非常重要的作用,冒號用來隔開每一個項。

我們很幸運,cut命令提供了這樣的提取方式,具體的說就是設定“間隔符”,再設定“提取第幾個域”,就OK了!

複製程式碼

[[email protected] etc]# cat /etc/passwd |head -n 5
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[[email protected] etc]# cat /etc/passwd|head -n 5|cut -d : -f 1
root
bin
daemon
adm
lp
[[email protected] etc]# cat /etc/passwd|head -n 5|cut -d : -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp

複製程式碼

有時候製表符確實很難辨認,有一個方法可以看出一段空格到底是由若干個空格組成的還是由一個製表符組成的

複製程式碼

[[email protected] rh]$ sed -n l test.txt 
this is first line$
this is second line$
this is third line$
this is fourth line$
this\tfifth line$
happy everyday$
end$

複製程式碼

如果是製表符(TAB),那麼會顯示為\t符號,如果是空格,就會原樣顯示。通過此方法即可以判斷製表符和空格了。

這是sed中的用法:l  [n]

用明確的形式顯示模版空間的資料:

①、以C-style的轉義形式顯示不能列印的字元(換行符、製表符等)和本身的\Char形式;

②、長的行將進行分割,以字元\結尾的行表示分割,以字元$結尾的行表示分割結束。

③、n指定顯示行的長度,超過就進行分割;若為0表示不分割所有行;沒有指定時就取命令列選項-l的設定,再沒有就取預設值70。這是GNU的擴充套件功能。

其實cut的-d選項的預設間隔符就是製表符,所以當你就是要使用製表符的時候,完全就可以省略-d選項,而直接用-f來取域就可以了!如果你設定一個空格為間隔符,使用 -d ' '而且,你只能在-d後面設定一個空格,可不許設定多個空格,因為cut只允許間隔符是一個字元。

相關推薦

[轉載]Linuxcut選取命令

定義 正如其名,cut的工作就是“剪”,具體的說就是在檔案中負責剪下資料用的。cut是以每一行為一個處理物件的,這種機制和sed是一樣的 剪下依據 cut命令主要是接受三個定位方法: 第一,位元組(bytes),用選項-b 第二,字元(characters)

Linuxcut選取命令

轉載地址 定義 正如其名,cut的工作就是“剪”,具體的說就是在檔案中負責剪下資料用的。cut是以每一行為一個處理物件的,這種機制和sed是一樣的 剪下依據 cut命令主要是接受三個定位方法: 第一,位元組(bytes),用選項-b 第二,字元(character

【轉載】linux的mount命令

文件的 flag 自動加載 網絡文件系統 解決問題 選項 lock home 多個參數 以下內容來自:http://blog.csdn.net/clozxy/article/details/5299054 http://linux.chinaunix.net/techdo

【轉載】Linux安裝軟體命令

【轉載日期】2018.09.11 【轉載標題】Linux下安裝軟體命令詳解 ----------------------------------------------------------------------------------------------

linux的tar命令

通過SSH訪問伺服器,難免會要用到壓縮,解壓縮,打包,解包等,這時候tar命令就是是必不可少的一個功能強大的工具。linux中最流行的tar是麻雀雖小,五臟俱全,功能強大。 tar命令可以為linux的檔案和目錄建立檔案。利用tar,可以為某一特定檔案建立檔案(備份檔案),也可以在檔案中改變檔案,或者向檔案

Linux的ls命令以及C語言實現

一、眾所周知,ls是linux下最常用的命令之一,使用起來也相當的快捷與方便,ls 命令將每個由 Directory 引數指定的目錄或者每個由 File 引數指定的名稱寫到標準輸出,以及您所要求的和標誌一起的其它資訊。如果不指定 File 或 Directory

Linux的find命令

這篇部落格講講Linux下檔案查詢的命令:locate和find,其中locate很簡單,主要講解find命令 locate 用法 locate to/find/file/name 直接加上需要的檔名就行了,但是locat

Linux的rsync命令(受不了網上以訛傳訛的翻譯)

rsync是一款UNIX系統中的開源工具,提供增量的檔案傳輸功能。 rsync採用GNU GPL許可證。 rsync的最新版本是2015.12.21釋出的3.1.2。 1.rsync工具的組成 rsync檔案,實現遠端檔案複製的命令rsync.conf檔案,在Daemon模

linux之‘cut -f1’命令

$ uname -rs|sed 's/ //g'|cut -f1 -d'-' Linux2.4.20 我們也可以通過cut取得每行中特定的幾個字元,但這時不能再跟 -d 選項 $uname -rs|sed 's/ //g'|cut -c1          //表示取第一個字元 L $ uname -r

linux sort uniq cut wc命令

oot tab 出行 bus post ttext swd lang toolbar sort sort 命令對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。

linux sort,uniq,cut,wc命令

linux sortuniqcutsort 命令對 File 參數指定的文件中的行排序,並將結果寫到標準輸出。如果 File 參數指定多個文件,那麽 sort 命令將這些文件連接起來,並當作一個文件進行排序。sort語法 [root@www ~]# sort [-fbMnrtuk] [file or stdi

Linux系統apt-get命令

常用的APT命令引數: apt-cache search package 搜尋包 apt-cache show package 獲取包的相關資訊,如說明、大小、版本等 sudo apt-get install package 安裝包 sudo apt-get instal

Ubuntu Linux系統apt-get命令 轉貼

常用的APT命令引數: apt-cache search package 搜尋包 apt-cache show package 獲取包的相關資訊,如說明、大小、版本等 sudo apt-get install package 安裝包 sudo apt-get install

Linux/Unix環境的make命令

無論是在Linux還是在Unix環境中,make都是一個非常重要的編譯命令。  Makefile檔案   Make工具最主要也是最基本的功能就是通過makefile檔案來描述源程式之間的相互關係並自動維護編譯工作。而makefile 檔案需要按照某種語法進行編寫,檔案中需要說

LinuxLinux定時任務Crontab命令

星期幾 ima 默認 定時 最好 表示 時間 path 配置文件 linux 系統則是由 cron (crond) 這個系統服務來控制的。Linux 系統上面原本就有非常多的計劃性工作,因此這個系統服務是默認啟動的。另 外, 由於使用者自己也可以設置計劃任務,所以, Lin

Linux hosts文件

domain none oca 不同 詳解 als 機器 區別 int Linux 下hosts文件詳解 主機名: 無論在局域網還是INTERNET上,每臺主機都有一個IP地址,是為了區分此臺主機和彼臺主機,也就是說IP地址就是主機的門牌號。 公網:IP地

Linux基礎進程命令

linux運維學習進程有關基礎命令一、進程定義1、進程就是CPU未完成的工作,而且它是其中運行著一個或多個線程的地址空間和這些線程所需要的系統資源。二、Linux系統進程和一些有關進程的命令1、ps命令 ps [options] 1》ps - report a snapshot of the c

Linux使用Corosync+Pacemaker及安裝

corosync pacemaker 珠聯璧合 Corosync詳解OpenAIS概述OpenAIS是基於SA Forum 標準的集群框架的應用程序接口規範。OpenAIS提供一種集群模式,這個模式包括集群框架,集群成員管理,通信方式,集群監測等,能夠為集群軟件或工具提供滿足 AIS標準的集

Linux上的free命令-收藏

cnblogs sed () 回收 dha 二維數組 版式 nbsp shared 解釋一下Linux上free命令的輸出。   下面是free的運行結果,一共有4行。為了方便說明,我加上了列號。這樣可以把free的輸出看成一個二維數組FO(Free Output)。例如

Linux crontab 定時任務命令

-1 data new ubuntu 時間間隔 服務 run back use Linux Crontab 定時任務 命令詳解 [日期:2016-02-13] 來源:Linux社區 在工作中需要數據庫在每天零點自動備份所以需要建立一個定時任務.我選擇在Linux下使用