新聞中心
Linux去重教程: 如何只保留一個重復行?

創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,先為寒亭等服務(wù)建站,寒亭等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為寒亭企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
在處理文本數(shù)據(jù)時,常常會出現(xiàn)重復行的情況,這些重復行的存在可能會導致數(shù)據(jù)分析和處理的不準確性,因此需要進行去重處理。在Linux系統(tǒng)中,有多種方法可以實現(xiàn)去重,本文將介紹幾種常用的方法和命令,幫助你快速去重并只保留一個重復行。
一、使用sort命令去重
sort命令可以將文件中的所有行進行排序,并去除其中的重復行??梢允褂靡韵旅顚⑽募M行去重:
sort file.txt | uniq > dedup.txt
上述命令將文件file.txt中的所有行進行排序,并將其中的重復行去除,然后將結(jié)果保存在dedup.txt文件中。
如果你想要保留一個重復行,可以使用以下命令:
sort file.txt | uniq -u > dedup.txt
上述命令將文件file.txt中的所有行進行排序,并找出其中不重復的行保存在dedup.txt文件中。
二、使用awk命令去重
awk是一種強大的文本處理工具,可以進行復雜的文本操作。使用awk命令去重可以靈活地設(shè)置去重條件??梢允褂靡韵旅钊コ募械闹貜托校?/p>
awk ‘!a[$0]++’ file.txt > dedup.txt
上述命令將文件file.txt中的重復行去除,并保存非重復的行到dedup.txt文件中。
如果你想要保留一行重復的行,可以使用以下命令:
awk ‘!a[$0]++ || a[$0]==1’ file.txt > dedup.txt
上述命令將文件file.txt中的重復行去除,并保存唯一的行和之一個重復的行到dedup.txt文件中。
三、使用grep命令去重
grep是一種強大的文本搜索工具,可以搜索文件中的指定字符串。使用grep命令去重可以根據(jù)指定的字符串進行去重。可以使用以下命令去重文件中的行:
cat file.txt | grep -v ‘^\s*$’ | uniq > dedup.txt
上述命令將文件中的空行去除,并將其中的重復行去除,然后將結(jié)果保存在dedup.txt文件中。
如果你想要保留一個重復的行,可以使用以下命令:
cat file.txt | grep -v ‘^\s*$’ | uniq -u > dedup.txt
上述命令將文件中的空行去除,并找出其中不重復的行保存在dedup.txt文件中。
四、使用sed命令去重
sed是一種強大的文本轉(zhuǎn)換工具,可以對文件中的指定行進行轉(zhuǎn)換。使用sed命令去重可以根據(jù)指定的規(guī)則去重??梢允褂靡韵旅钊ブ匚募械男校?/p>
sed -e ‘s/^\(.*\)$/\1,1/’ file.txt | sort -u -t, -k1,1 | cut -d’,’ -f1 > dedup.txt
上述命令將文件中的每行加上序號,并將其中的重復行去除,然后將去重后的行保存在dedup.txt文件中。
如果你想要保留一個重復的行,可以使用以下命令:
sed -e ‘s/^\(.*\)$/\1,1/’ file.txt | sort -t’,’ -k1,1 -u | cut -d’,’ -f1 > dedup.txt
上述命令將文件中的每行加上序號,并找出其中不重復的行保存在dedup.txt文件中。
本文介紹了四種常用的Linux命令去重方法,通過這些命令可以快速去重并只保留一個重復行。使用這些命令能夠幫助我們在處理文本數(shù)據(jù)時更加高效和準確。
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián)為您提供網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)頁設(shè)計及定制高端網(wǎng)站建設(shè)服務(wù)!
如何快速刪除Linux文件中的重復數(shù)據(jù)行
uniq 文件名
這樣就可以了
用uniq,罩宏如下,將罩和 1.txt 中 所有 “相鄰” 重復行合并成一行,結(jié)果存入 2.txt
uniq 1.txt > 2.txt
如果是想將相鄰重復物悶盯行徹底刪掉(而不是合并成一行),可以用
uniq -u 1.txt > 2.txt
哪個逗逼寫的答案,不相鄰的行就尺汪腔不用去了嗎?
可以用sort Filename|uniq -u >OutputFilename
但是這也不快速,因為sort的排序過程其實陵稿是沒有必要的,浪費了大量時間,最快的方陵衫法還是寫c。
利用Linux命令行進行文本按行去重并按重復次數(shù)排序
利用linux命令行進行文本按行去重并按重復次數(shù)排序linux命令行提供了非常強大的文本處理功能,組合利用linux命令能實現(xiàn)好多強大的功搏李能。本文這里舉例說明如何利用linux命令行進行文本按行去重并按重復次數(shù)排序。主要用到的命令有sort,uniq和cut。其中,sort主要功能是排序,uniq主要功能是實現(xiàn)相鄰文本行的去重,cut可以從文本行中提取相應(yīng)的文本列(簡單地說,就是按列操作文本行)。用于演示的測試文件內(nèi)容如下:Hello
World.
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
The
Iphone
of
Apple
company.
Hello
World.
The
Iphone
of
Apple
company.
My
name
is
Friendfish.
Hello
World.
Apple
and
Nokia.
實現(xiàn)命令及過程如下:1、文本行去重
(1)排序
由于uniq命令只能對相鄰行進行去重復操作,所以在進行去重前,先要對文本行進行排序,使重復行集中到一起。
$
sort
test.txt
Apple
and
Nokia.
Apple
and
Nokia.
Hello
World.
Hello
World.
Hello
World.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
The
Iphone
of
Apple
company.
(2)去掉相鄰的重復行
$
sort
test.txt
|
uniq
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
2、文本行去重并按重復次數(shù)排序
(1)首先,對文本行進行去重并統(tǒng)計重復次數(shù)(uniq命令加-c選項可以實現(xiàn)對重復次數(shù)進行統(tǒng)計。)。
$
sort
test.txt
|
uniq
-c
Apple
and
Nokia.
Hello
World.
I
wanna
buy
an
Apple
device.
My
name
is
Friendfish.
The
Iphone
of
Apple
company.
(2)對文本行按重復次數(shù)進行排序。
sort
-n可以識別每行開頭的數(shù)字,并按其大小對文本行進行排序。默認是按升序排列,如果想要按降序要加-r選項(sort
-rn)。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
(3)每行前面的刪除重復次數(shù)。
cut命令可以按列操作文本行??梢钥闯銮懊娴闹貜痛螖?shù)占8個字符,因此,可以用命令cut
-c
9-
取出每行第9個及其以后的字符。
$
sort
test.txt
|
uniq
-c
|
sort
-rn
|
cut
-c
9-
Hello
World.
The
Iphone
of
Apple
company.
Apple
and
Nokia.
My
name
is
Friendfish.
I
wanna
buy
an
Apple
device.
下面附帶說一下cut命令的使用,用法如下:cut
-b
list
…>
cut
-c
list
…>
cut
-f
list
delim>
…>
上面的-b、-c、-f分別表示字節(jié)、字符、字段(即byte、character、field);
list表示-b、-c、-f操作范圍,-n常常表示具體數(shù)字;
file表示的自然是要操作的文本粗旅文件的名稱;
delim(英文巖銀凳全寫:delimiter)表示分隔符,默認情況下為TAB;
-s表示不包括那些不含分隔符的行(這樣有利于去掉注釋和標題)
三種方式中,表示從指定的范圍中提取字節(jié)(-b)、或字符(-c)、或字段(-f)。
范圍的表示方法:
n
只有第n項
n-
從第n項一直到行尾
n-m
從第n項到第m項(包括m)
-m
從一行的開始到第m項(包括m)
–
從一行的開始到結(jié)束的所有項
關(guān)于linux將重復行只保留一個的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
香港云服務(wù)器機房,創(chuàng)新互聯(lián)(www.cdcxhl.com)專業(yè)云服務(wù)器廠商,回大陸優(yōu)化帶寬,安全/穩(wěn)定/低延遲.創(chuàng)新互聯(lián)助力企業(yè)出海業(yè)務(wù),提供一站式解決方案。香港服務(wù)器-免備案低延遲-雙向CN2+BGP極速互訪!
標題名稱:Linux去重教程:如何只保留一個重復行?(linux將重復行只保留一個)
鏈接URL:http://www.5511xx.com/article/cdegged.html


咨詢
建站咨詢
