linux中去掉文件重復(fù)數(shù)據(jù)行的方法(去重復(fù)ip)
一、去掉相鄰重復(fù)的數(shù)據(jù)行
$cat data1.txt | uniq
輸出:
beijing
wuhan
beijing
wuhan
二、去掉所有重復(fù)的數(shù)據(jù)行
$cat data1.txt | sort | uniq
注:
只有uniq命令的話,只是把相鄰的重復(fù)的數(shù)據(jù)行去掉。
如果先 sort 的話,就會(huì)把所有重復(fù)的數(shù)據(jù)行變成相鄰的數(shù)據(jù)行,再 uniq 的話,就去掉所有重復(fù)的數(shù)據(jù)行了。
輸出:
beijing
wuhan
附:data1.txt
[root@syy ~]# cat data1.txt
beijing
beijing
wuhan
wuhan
wuhan
beijing
beijing
beijing
wuhan
wuhan
注:在過(guò)濾日志中的IP地址很有用。
Linux下刪除大數(shù)據(jù)文件中部分字段重復(fù)的行
最近寫的一個(gè)數(shù)據(jù)采集程序生成了一個(gè)含有1千多萬(wàn)行數(shù)據(jù)的文件,數(shù)據(jù)由4個(gè)字段組成,按照要求需要?jiǎng)h除第二個(gè)字段重復(fù)的行,找來(lái)找去linux下也沒(méi)找到合適的工具,sed/gawk等流處理工具只能針對(duì)一行一行處理,并無(wú)法找到字段重復(fù)的行。看來(lái)只好自己python一個(gè)程序了,突然想起來(lái)利用mysql,于是進(jìn)行乾坤大挪移:
1. 利用mysqlimport --local dbname data.txt導(dǎo)入數(shù)據(jù)到表中,表名要與文件名一致
2. 執(zhí)行下列sql語(yǔ)句(要求唯一的字段為uniqfield)
use dbname;
alter table tablename add rowid int auto_increment not null;
create table t select min(rowid) as rowid from tablename group by uniqfield;
create table t2 select tablename .* from tablename,t where tablename.rowid= t.rowid;</p> <p>drop table tablename;
rename table t2 to tablename;
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。