婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識(shí)庫 > shell兩個(gè)文件去重的多種姿勢

shell兩個(gè)文件去重的多種姿勢

熱門標(biāo)簽:測繪地圖標(biāo)注名稱 德陽400電話申請 天津電話外呼系統(tǒng)排名 怎么在百度地圖標(biāo)注公司的位置 百度地圖標(biāo)注直線距離 外呼電話系統(tǒng)怎么操作 鶴崗400電話申請 智能電銷機(jī)器人有用嗎 商機(jī)地圖標(biāo)注

前言

大家都知道shell在文本處理上確有極大優(yōu)勢,比如多文本合并、去重等,但是最近遇到了一個(gè)難搞的問題,即兩個(gè)大數(shù)據(jù)量文件去重。下面來看看詳細(xì)的介紹吧。

要求 

有txt文件A.txt和B.txt。

其中A為關(guān)鍵詞和搜索量,以逗號(hào)分隔,約90萬行。

B為關(guān)鍵詞,約400萬行。

需要從A中找出與B重復(fù)的關(guān)鍵詞。

我試了N種姿勢,但結(jié)果都不盡人意,最奇怪的是有些方法對小數(shù)據(jù)量的測試文件有用,一旦用在A與B上就會(huì)失敗,真叫人百思不得其解。

姿勢一:

awk -F, '{print $1}' A >keywords.txt
cat keywords.txt B.txt | sort | uniq -d
 
#先從A.txt種取出關(guān)鍵詞,然后與B.txt一起打開,用sort排序,uniq -d 取出重復(fù)的行

姿勢二:

awk -F, '{print $1}' A >keywords.txt
#照例先取出關(guān)鍵詞
 
comm -1 -2 keywords.txt B.txt
#利用comm命令,顯示兩個(gè)文件都存在的行

姿勢三:

awk -F, '{print $1}' A >keywords.txt
for i in `cat keywords.txt`
do
  A=`egrep -c "^$i$" B.txt`
  if [ $A != 0 ]
  then
    echo $i >>重復(fù)關(guān)鍵詞.txt
  fi
done
 
#這種姿勢就稍微復(fù)雜點(diǎn)
#首先取出關(guān)鍵詞,然后利用for循環(huán)逐個(gè)去B.txt里面匹配(注意正則寫法^$i$),如果匹配到的結(jié)果數(shù)不為0,說明這個(gè)關(guān)鍵詞是重復(fù)的,然后輸出
#這種方法的優(yōu)點(diǎn)是穩(wěn)妥,缺點(diǎn)是效率太TM低了,90萬個(gè)詞逐一與400萬詞匹配,shell默認(rèn)又沒有多線程,耗時(shí)太長。

姿勢四:

awk -F, '{print $1}' A >keywords.txt
cat keywords.txt B.txt | awk '!a[$1]++'
 
#這個(gè)方法的原理其實(shí)我不太懂,awk命令實(shí)在太強(qiáng)大太高深了,但是這種方法又簡潔又快速

其實(shí)還有一種grep -vgrep -f 的方法,但是我沒有試過,所以不在這里列出了。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

您可能感興趣的文章:
  • 判斷文件是否存在的shell腳本代碼
  • Shell逐行讀取文件的4種方法
  • shell去掉文件中空行(空白行)的方法詳解
  • shell腳本中執(zhí)行時(shí)提示“沒有那個(gè)文件或目錄”的解決辦法
  • shell按行讀取文件的3種方法
  • Shell腳本統(tǒng)計(jì)文件行數(shù)的8種方法
  • Shell獲取文件的文件名和擴(kuò)展名的例子
  • Shell中調(diào)用、引用、包含另一個(gè)腳本文件的三種方法
  • shell判斷文件,目錄是否存在或者具有權(quán)限的代碼
  • shell中刪除文件中重復(fù)行的方法

標(biāo)簽:百色 鎮(zhèn)江 武漢 滁州 優(yōu)質(zhì)小號(hào) 六盤水 自貢 丹東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《shell兩個(gè)文件去重的多種姿勢》,本文關(guān)鍵詞  shell,兩個(gè),文件,去,重的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《shell兩個(gè)文件去重的多種姿勢》相關(guān)的同類信息!
  • 本頁收集關(guān)于shell兩個(gè)文件去重的多種姿勢的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 肃北| 长寿区| 庆云县| 阜阳市| 内江市| 铁岭县| 大丰市| 当涂县| 石城县| 松江区| 紫云| 长寿区| 鄄城县| 绍兴市| 芜湖市| 镇沅| 乌鲁木齐市| 新乐市| 乌兰浩特市| 古浪县| 水城县| 钟山县| 曲麻莱县| 德令哈市| 桃园县| 凉城县| 松溪县| 广河县| 和田市| 弥渡县| 慈溪市| 曲周县| 宿迁市| 苍梧县| 确山县| 德惠市| 特克斯县| 平罗县| 澄城县| 蓬莱市| 余江县|