命令是:cut
從字面上來看,cut 命令與剪下有關,實際也是如此,cut 命令將乙個字串按某種特定的方式進行裁剪提取並輸出。結合其它命令,cut 可以很輕鬆的提取其它命令輸出結果中我們所需要的內容。
cut基本格式:
cut 選項 檔案
命令選項:
-b: 以位元組為單位進行分割;
-c: 以字元為單位進行分割;
-d: 自定義分割符,預設是製表符;
-f: 以區域為單位進行分割,常與 -d 選項一起使用;
-n: 取消分割多位元組字元,僅與 -b 選項同用;
從對 cut 命令的選項描述來看,該命令一般通過三種單位進行分割:位元組、字元、域 。下面詳細介紹這三種分割方式。
以位元組為單位進行分割
假如現在有個 test1.txt 檔案,檔案內容如下:
$ cat test1.txt
monday
tuesday
wednesday
thursday
friday
saturday
sunday
1.提取每一行的第 1 個位元組
命令如下:
$ cut -b 1 test1.txtmt
wtfs
s2.提取每一行的第 2 、4 、6 個位元組
命令如下:
$ cut -b 2,4,6 test1.txt
odyusa
enshrd
rdyaud
udy3.提取每一行的第 3、4、5、6 個位元組
如果位元組是連續的,我們就沒必要乙個個列出來,只需使用短橫槓 - 將區間列出來即可,如下:
$ cut -b 3-6 test1.txt
nday
esda
dnes
ursd
iday
turd
nday
4. 提取第 1、2、3 及 6 個位元組
命令如下 :
$ cut -b 1-3,6 test1.txt
mony
tuea
weds
thud
friy
satd
suny
5. 提取前 3 個位元組或第 3 個位元組之後的內容
命令如下:
$ cut -b -3 test1.txt
montue
wedthu
frisat
sun$ cut -b 3- test1.txt
nday
esday
dnesday
ursday
iday
turday
nday
以字元為單位進行分割
位元組與字元的差別是啥?舉個例子吧,a 這是乙個位元組,而 啊 這是乙個字元,明白了吧?對於漢字而言,每乙個漢字都是乙個字元。
假如現在有個 test2.txt 檔案,它的內容如下:
$ cat test2.txt
良許真帥
守望文章寫得好
小灰倉鼠很可愛
明哥真爺們
如果以位元組為單位分割,那效果是如何的呢?
$ cut -b 2 test2.txt▒▒
▒▒很明顯,一堆亂碼。如果要正確分割字元,那麼就需要 -nb 或 -c 選項。
$ cut -nb 2 test2.txt許望
灰哥$ cut -c 2 test2.txt許望
灰哥
以域為單位進行分割
域是什麼?我們以 /etc/passwd 檔案為例說明。
$ 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
從 passwd 檔案可以明顯看出來,每個使用者的各項資訊是用冒號 : 進行隔開,所隔開的每項內容都可以稱為「域」,而冒號稱為「間隔符」。
現在,我們想要提取每一行的第乙個域,命令如下:
$ cat /etc/passwd | head -n 5 | cut -d : -f 1
root
bindaemon
admlp
在這裡,我們用 -d 選項來指定冒號 : 為間隔符,然後再用 -f 選項來指定要提取的域。當然,間隔符不僅僅是冒號,我們還可以指定其它符號,比如逗號,空格,等等。
但是,如果乙個字串裡如果兩個單詞間有多個空格,則 cut 命令將無法分辨,所以這也是 cut 命令的缺陷。
Linux下cut命令的使用
linux下有諸多進行文字處理的命令,這裡介紹的是cut命令。cut命令能夠對文字檔案中的行,進行按位元組 字元和字段進行剪下,然後將指定的相應部分寫到標準輸出。如果沒有給定檔名,cut命令將預設讀取標準輸入。1 cut命令的語法總括 cut file.從上面的格式上不難看出,cut命令的使用主要有...
Linux命令 cut的使用
cut是將文字進行按列切分的乙個小工具。製表符為預設定界符 1 cut f filed list filename 例如 cut f 2,3 filename 該命令會將filename檔案內容的第2,第3列顯示出來 2 排除某列 complement 例如 cut f 2 complement f...
Linux下使用cut切割有規則的列文字
data.txt no name mark percent 1 sarath 45 90 2 alex 49 98 3 anu 45 90 分隔符 定界符 為tab 製表符 如果我要取得第二列,所有人的名稱,有什麼好的辦法嗎?此時cut該大顯身手了。1 取得2,3列 即name,和mark cut ...