Linux 下cut的使用

2021-10-05 06:59:55 字數 2453 閱讀 9957

命令是: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 ...