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...