shell文字過濾程式(十) cut命令

2021-09-07 02:55:40 字數 2368 閱讀 5210

cut指揮類似至awk,從行內提取的資訊,它是乙個較弱的版本的功能awk。

cut命令格式為:cut [options] filename

當中options有:

-d  指定與空格和t a b鍵不同的域分隔符。類似於awk的「-f」。

-f field  指定剪下域數

-c list  指定剪下字元數。

首先我們來處理按:切割的password檔案:

# cat passwd

root:x:0:0:root:/root:/bin/sh

proxy:x:13:13:proxy:/bin:/bin/sh

operator:x:37:37:operator:/var:/bin/sh

ftp:x:83:83:ftp:/home/ftp:/bin/sh

nobody:x:99:99:nobody:/home:/bin/sh

sshd:x:103:99:operator:/var:/bin/sh

按:切割,然後取第一列和第六列,-f能夠指定獲取的域數:

# cut -d: -f1,6 passwd

root:/root

proxy:/bin

operator:/var

ftp:/home/ftp

nobody:/home

sshd:/var

指定域數還能夠這樣寫:

# cut -d: -f 1-4,6 passwd

root:x:0:0:/root

proxy:x:13:13:/bin

operator:x:37:37:/var

ftp:x:83:83:/home/ftp

nobody:x:99:99:/home

sshd:x:103:99:/var

awk的實現為:

# awk -f: 'begin' passwd    

root:x:0:0:/root

proxy:x:13:13:/bin

operator:x:37:37:/var

ftp:x:83:83:/home/ftp

nobody:x:99:99:/home

sshd:x:103:99:/var

可是假設要指定多個字元來切割的話,cut就不行了。cut僅僅支援單個分隔字元,二awk支援多個。

比方我們以「bin」分分隔:

# awk -f"bin" 'begin' passwd

root:x:0:0:root:/root:/

proxy:x:13:13:proxy:/

operator:x:37:37:operator:/var:/

ftp:x:83:83:ftp:/home/ftp:/

nobody:x:99:99:nobody:/home:/

sshd:x:103:99:operator:/var:/

使用cut:
# cut -d"bin" -f1 passwd                                      

cut: the delimiter must be a single character

try 'cut --help' for more information.

這裡能夠看見cut命令的功能非常有限。

cut預設以tab鍵來切割,awk預設以空格或多個空格或tab鍵來切割:

# sed 's/:/\t/g' passwd | cut -f5

root

proxy

operator

ftpnobody

operator

# sed 's/:/\t/g' passwd | awk ''

root

proxy

operator

ftpnobody

operator

cut能夠剪下第隨意字元。看似功能強大,但非常少有使用價值。

使用- c選項指定精確剪下數目。這樣的方法需確切知道開始及結束字元。

通常不用這樣的方法,除非在固定長度的域或檔名稱上。

來看幾個樣例即可了:

# cut -c1,2,4 passwd

rotprx

oprft:

noossd

# cut -c5-9 passwd       

:x:0:

y:x:1

ator:

x:83:

dy:x:

:x:10

shell 文字過濾

今天閒著沒事,把以前寫的shell再拿出來看好多都忘記了,於是自己用看了一邊資料 表是單個字元 一行的開始 d以開頭的 1 第三個為1的字元 字元要放在匹配的字元前面 一行的末尾 表示空行 匹配一行乙個字元的 字元要放在匹配的字元後面 匹配任意個字元 包括0個字元 可以遮蔽乙個特殊的字元 pas 這...

Shell文字過濾

元字元 只匹配行首,如 d匹配drwxr x x 只匹配行尾,如trouble 匹配以trouble結尾的所有字元 匹配空行 匹配0個或多個 匹配字元或字串行,中間可以使用 來進行分割,如 1 5 匹配12345,0 9 匹配0到9,a z a za z a za z0 9 等 遮蔽元字元的特殊含義...

shell之使用cut切割文字檔案

我們知道可以通過工具grep或egrep按行篩選記錄,這裡我們可以通過cut工具對文字按列進行切分,它可以指定定界符,linux下製表符是預設的定界符。cut f 2,3 textfile 這個命令可以顯示textfile檔案的第2 3列。例如 有檔案如下 cat dept 10 accountin...