shell文本過濾編程(十):cut命令
來源:程序員人生 發(fā)布時間:2014-09-14 19:41:39 閱讀次數(shù):3000次
【版權(quán)聲明:轉(zhuǎn)載請保留出處:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】
cut命令類似于awk,從行里面抽取信息,是一個功能弱化版的awk。
cut命令格式為:cut [options] filename
其中options有:
-d 指定與空格和t a b鍵不同的域分隔符。類似于awk的“-F”。
-f field 指定剪切域數(shù)
-c list 指定剪切字符數(shù)。
首先我們來處理按:分割的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可以指定獲取的域數(shù):
# cut -d: -f1,6 passwd
root:/root
proxy:/bin
operator:/var
ftp:/home/ftp
nobody:/home
sshd:/var
指定域數(shù)還可以這樣寫:
# 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的實現(xiàn)為:
# awk -F: 'BEGIN{OFS=":"}{print $1,$2,$3,$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
但是如果要指定多個字符來分割的話,cut就不行了,cut只支持單個分隔字符,二awk支持多個。比如我們以“bin”分分隔:
# awk -F"bin" 'BEGIN{OFS=":"}{print $1}' 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默認(rèn)以tab鍵來分割,awk默認(rèn)以空格或多個空格或tab鍵來分割:
# sed 's/:/ /g' passwd | cut -f5
root
proxy
Operator
ftp
nobody
Operator
# sed 's/:/ /g' passwd | awk '{print $5}'
root
proxy
Operator
ftp
nobody
Operator
cut可以剪切第任意字符,看似功能強大,但很少有使用價值。使用- c選項指定精確剪切數(shù)目。這種方法需確切知道開始及結(jié)束字符。通常不用這種方法,除非在固定長度的域或文件名上。
來看幾個例子就行了:
# cut -c1,2,4 passwd
rot
prx
opr
ft:
noo
ssd
# cut -c5-9 passwd
:x:0:
y:x:1
ator:
x:83:
dy:x:
:x:10
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈