linux去重命令是什么呢?
寧津網站制作公司哪家好,找創(chuàng)新互聯(lián)!從網頁設計、網站建設、微信開發(fā)、APP開發(fā)、響應式網站建設等網站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)2013年開創(chuàng)至今到現(xiàn)在10年的時間,我們擁有了豐富的建站經驗和運維經驗,來保證我們的工作的順利進行。專注于網站建設就選創(chuàng)新互聯(lián)。
在介紹uniq命令之前,我們先來新建在下面的案例中需要用到的文件/tmp/uniq.txt,內容如下
默認情況下uniq只會檢索相鄰的重復數據從而去重。在/tmp/uniq.txt中雖然“onmpw web site” 有三條,但是其中一條是和其他兩條不相鄰的,所以只去重了一條,同理“error php function”也是這種情況。
鑒于以上的檢索機制,所以uniq一般情況下要和sort命令一塊兒使用。
復制代碼
# sort 1.txt | uniq
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
repeat no data
wello web site
復制代碼
現(xiàn)在再看是不是所有的重復項都已經經過去重處理了。
好了,小試牛刀一把以后,下面我們開始對uniq命令的選項進行簡單的介紹。
-c 統(tǒng)計每一行數據的重復次數
復制代碼
sort 1.txt | uniq -c
1 alpha css web
1 cat linux command
2 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
復制代碼
我們看 “error php function”出現(xiàn)了兩次,“onmpw web site”出現(xiàn)了三次。其余的都沒有重復項所以為1。
-i 忽略大小寫
在1.txt中添加一行數據 “Error PHP function”
復制代碼
cat 1.txt
alpha css web
cat linux command
error php function
hello world
onmpw web site
onmpw web site
wello web site
Error PHP function
recruise page site
error php function
repeat no data
onmpw web site
復制代碼
復制代碼
sort 1.txt | uniq –c
1 alpha css web
1 cat linux command
2 error php function
1 Error PHP function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
復制代碼
我們看結果,uniq默認是區(qū)分大小寫的。使用-i可以忽略掉大小寫問題
復制代碼
sort 1.txt | uniq –c –i
1 alpha css web
1 cat linux command
3 error php function
1 hello world
3 onmpw web site
1 recruise page site
1 repeat no data
1 wello web site
復制代碼
現(xiàn)在再看是不是大小寫已經忽略掉了。
-u 只輸出沒有重復的數據
復制代碼
sort 1.txt | uniq –iu
alpha css web
cat linux command
hello world
recruise page site
repeat no data
wello web site
復制代碼
看到沒,結果中的“error php function”和“onmpw web site”都沒有被輸出。
-w N 表示從第一個字符開始只檢索N個字符來判重。
復制代碼
sort 1.txt | uniq –iw 2
alpha css web
cat linux command
error php function
hello world
onmpw web site
recruise page site
wello web site
復制代碼
這里我們讓uniq只對前兩個字符進行檢索,recruit 和 repeat前兩個字符都是re,所以這兩行也被認為是重復的。
-f N 表示略過前面N個字段,從第N+1個字段開始檢索重復數據。以空格符或者tab鍵為分隔符。
復制代碼
sort 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
3 error php function
1 hello world
4 onmpw web site
1 repeat no data
1 wello web site
復制代碼
我們在結果中可以看到,這是略過前面的2個字段,從第三個字段開始判重的?!皉ecruise page site” 和 “onmpw web site”的第三個字段相同,所以被認為是相同的數據。但是我們看到,“wello web site”和“onmpw web site”不但第三個字段相同,第二個也相同。那為什么它不被計入“onmpw web site”的重復數據中呢。對于這個問題就要回到前面說的,uniq只檢測相鄰的數據是否是重復的。
要解決這個問題還需要在sort命令上著手。還記得sort命令的-k選項嗎,沒錯,我們就用它來解決。
復制代碼
sort –k 2 1.txt | uniq –icf 2
1 alpha css web
1 cat linux command
1 repeat no data
1 recruise page site
3 error php function
4 onmpw web site
1 hello world
復制代碼
我們看,是不是解決了。
-s N表示略過前面N個字符,關于這個選項的例子我們這里就不再舉了,該選項和-f N的用法差不多。只不過-f N是略過前面N個字段;-s是略過前面N個字符。
-d 只輸出有重復項的第一條的數據。
sort 1.txt | uniq -idw 2
repeat no data
error php function
onmpw web site
結果只有這三條。為什么會有“repeat no data”這條數據,這里注意-w 2的應用。
-D 對于重復項全部輸出
復制代碼
sort 1.txt | uniq –iDw 2
repeat no data
recruise page site
error php function
error php function
Error PHP function
onmpw web site
onmpw web site
onmpw web site
復制代碼
好了,關于uniq的選項的所有常用的命令已經都介紹完了。關于uniq更詳細的信息可以使用命令info uniq。
cat file.csv | awk -F '\t' '{print $2}'
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符號分割,換成其她符號;
'{print $2}'是指取第2列,此處從1開始計數,第1列,第2列;
一般去重之前要進行排序
cat file.csv | awk -F '\t' '{print $2}'?| sort | uniq
前半部分與命令1一樣,后面加上| sort | uniq
比如通過命令2發(fā)現(xiàn),第2列取值有兩種,分別是'neg'和‘pos’,那么我想知道有多少行的第2列取值為'pos',多少行的第2列取值為'neg'。
cat file.csv | awk -F '\t' '{print $2}'?|?grep -o 'neg'| wc -l
前半部分與命令1一樣,后面加上?|?grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值為'neg'的行
wc -l 是計數有多少行
uniq 對排序好的內容進行去重
-c 顯示輸出中,在每行行首加上本行在文件中出現(xiàn)的次數。
新聞標題:linux里面去重的命令 linux文本去重
網頁URL:http://jinyejixie.com/article38/dossisp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網站制作、Google、品牌網站制作、移動網站建設、自適應網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)