新聞中心
Linux去重教程: 如何只保留一個(gè)重復(fù)行?

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


咨詢
建站咨詢
