cut
cut就是“切”的意思,這個(gè)命令可以將一段信息的某一段“切”出來(lái),處理的信息是以“行”為單位。
用法:
1. cut-d'分隔符' -f fields
echo $PATH > test
echo $PATH | cut -d':' -f 5 >> test
echo $PATH | cut -d':' -f3,5 >> test
more test
/sr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
/usr/bin
/usr/local/bin:/usr/bin
注意:如果用cut命令從文件中析取字段,而又沒(méi)有指定分隔符,cut就用制表符作為默認(rèn)字段分隔符。
2. cut -c字符范圍
cut-cn1-n2 file(其中n1和n2是列號(hào),n2可以省略,則缺是從n1截取到該列最后一個(gè)字符)
例如:
date |cut -c1-4
2012
date |cut -c31-
16:11:22CST
paste
在某種意義上,paste命令就是與cut相反。它不是把行分開,而是把多行合在一起。paste命令的一般格式:paste files
其中files制定的那些文件中的對(duì)應(yīng)行形成一行,然后寫入標(biāo)準(zhǔn)輸出。在files中可以用破折號(hào)(-)表示從標(biāo)準(zhǔn)輸入獲得輸入。
假如這里有兩個(gè)文件,name和grade。
more name grade
::::::::::::::
name
::::::::::::::
Barbara
Alie
Susan
Tony
::::::::::::::
grade
::::::::::::::
99.0
76.0
89.0
100.0
從標(biāo)準(zhǔn)輸入獲得數(shù)據(jù):
paste name - >tt
12
13
14
15
more tt
Barbara 12
Alie 13
Susan 14
Tony 15
將兩個(gè)文件合并成一個(gè)文件:
paste name grade >>info
cat info
Barbara 99.0
Alie 76.0
Susan 89.0
Tony 100.0
文件中的每一行都與其他文件中相同行顯示在一起,中間用制表符分隔,如果不想用制表符分隔可以用-d制定分隔符。
paste -d: name grade >info
cat info
Barbara:99.0
Alie:76.0
Susan:89.0
Tony:100.0
-s選項(xiàng)告訴paste把同一文件中的行粘貼在一起,而不是從其他文件。如果制定一個(gè)文件名,其效果就是把文件中的所有行合并成一行,原來(lái)各行之間用制表符或者用-d選項(xiàng)制定的分隔符分隔。
paste -s name
Barbara Alie Susan Tony
ls / | paste -d' ' -s
bin boot cdrom dev etc home host initrd.img initrd.img.old lib lost+foundmedia mnt opt proc root run sbin selinux srv sys tmp usr var vmlinuzvmlinuz.old
tr
tr可以用來(lái)刪除一段信息當(dāng)中的文字,或者是進(jìn)行文字信息的替換。
grep
grep分析一行信息,若當(dāng)中有我們所需要的信息就將該行取出來(lái),簡(jiǎn)單的語(yǔ)法是這樣的:
grep [-acinv] [--color=auto] '查找的字符串'filename
參數(shù):
-a將binary文件以text文件的方式查找數(shù)據(jù);
-c計(jì)算找到’查找字符串‘的次數(shù);
-i查找的時(shí)候,忽略大小寫
-n順便輸出行號(hào);
-v反向選擇,即顯示出沒(méi)有‘查找字符串’ 內(nèi)容的那一行
以info文件為例:
more info | grep 99
Barbara:99.0
more info | grep -vcn 99
3
info| grep -vn 99
2:Alie:76.0
3:Susan:89.0
4:Tony:100.0
more info | grep -n '[A-Z]...[a-z]'
1:Barbara:99.0
3:Susan:89.0
grep是個(gè)很棒的命令,但是它的強(qiáng)大之處在于它能很好的處理正則表達(dá)式
sort
sort是個(gè)很有趣的命令,它可以幫我們進(jìn)行排序,而且可以根據(jù)不同的數(shù)據(jù)類型來(lái)排序。例如數(shù)字和文字的排序就不一樣。
用法:
sort [-fbMnrtuk] [file or stdin]
參數(shù):
-f:忽略大小寫
-b:忽略前面的空格部分
-M:以月份的名字來(lái)排序
-n:使用“純數(shù)字”進(jìn)行排序
-r:反向排序
-u:就是uniq,相同的數(shù)據(jù)中,僅出現(xiàn)一行代表
-t:分隔符,默認(rèn)用[tab]鍵來(lái)分隔
-k: 以哪個(gè)區(qū)間(filed)來(lái)排序
還是以info文件為例,按成績(jī)排序:
more info | cut -d: -f2,1 | sort
Alie:76.0
Barbara:99.0
Susan:89.0
Tony:100.0
more info | cut -d: -f2,1 | sort -r
Tony:100.0
Susan:89.0
Barbara:99.0
Alie:76.0
按名字進(jìn)行排序:
sort -t':' -r -k1 info
Tony:100.0
Susan:89.0
Barbara:99.0
Alie:76.0
sort -t':' -r -k2 info
Barbara:99.0
Susan:89.0
Alie:76.0
Tony:100.0
(按理說(shuō)應(yīng)該是按成績(jī)逆序排序的,但是結(jié)果不正確,只能說(shuō)sort對(duì)域的處理沒(méi)有cut好)
uniq
如果排完序以后,想要將重復(fù)的數(shù)據(jù)僅顯示一列,該怎么做呢?
uniq [-ic]
-i:忽略大小寫
-c:進(jìn)行計(jì)數(shù)
wc
這個(gè)命令用于統(tǒng)計(jì)文件中有多少字,多少行,多少字節(jié)。
用法:
wc [-lwm]
-l:僅列出行
-w:僅列出字?jǐn)?shù)
-m:多少字符
常用與統(tǒng)計(jì)一個(gè)目錄中包含多少文件。
ls| wc -l
聯(lián)系客服