亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標(biāo)題: 匹配每行的第二列,只輸出第一次匹配行 [打印本頁(yè)]

作者: volwang    時(shí)間: 2015-02-13 12:37
標(biāo)題: 匹配每行的第二列,只輸出第一次匹配行
本帖最后由 volwang 于 2015-02-13 12:40 編輯

已知文本:
qq sss.1  ww dd  rr  ee  tt yyy  
qq sss.1  wr  dt  tr  ye  qt yxy
qq sss.2  ww dd  rr  ee  tt yyy
qq sss.3  ww dd  rr  ey  tt yyy
qq sss.3  ww dd  rr  ee  tt yyy
qq sss.1  ww dd  rr  ee  tt yyy  
qq sss.1  ww dr  er  te  wt yyy  
qq sss.x1  ww dr  ur  te  wt yyy
qq sss.x1  ww dr  er  te  wt yyy
當(dāng)?shù)诙凶址嗤瑫r(shí),只輸出第一次出現(xiàn)的列,后面重復(fù)出現(xiàn)的刪除。
上述文本只輸出第1,3,4,8列,第2,5,6,7,9列不輸出。
結(jié)果:
qq sss.1  ww dd  rr  ee  tt yyy  
qq sss.2  ww dd  rr  ee  tt yyy
qq sss.3  ww dd  rr  ey  tt yyy
qq sss.x1  ww dr  ur  te  wt yyy

謝謝
作者: ly5066113    時(shí)間: 2015-02-13 12:57
回復(fù) 1# volwang
  1. awk '!a[$2]++' file
復(fù)制代碼

作者: volwang    時(shí)間: 2015-02-13 17:13
這個(gè)文本有25萬(wàn)行。用你這行代碼只能處理一部分。
作者: volwang    時(shí)間: 2015-02-13 17:13
這個(gè)文本有25萬(wàn)行。用你這行代碼只能處理一部分。
作者: volwang    時(shí)間: 2015-02-13 17:13
不能充分匹配。
作者: zxy877298415    時(shí)間: 2015-02-13 18:32
  1. wk '{if(++a[$2]==1) print $1,$3,$4,$8}' file
  2. qq ww dd yyy
  3. qq ww dd yyy
  4. qq ww dd yyy
  5. qq ww dr yyy
復(fù)制代碼
回復(fù) 5# volwang


   
作者: zooyo    時(shí)間: 2015-02-13 18:45
提示: 作者被禁止或刪除 內(nèi)容自動(dòng)屏蔽
作者: zxy877298415    時(shí)間: 2015-02-13 21:57
回復(fù) 7# zooyo


   
作者: dn833    時(shí)間: 2015-02-13 23:39
找個(gè)較大內(nèi)存的機(jī)器,把文件放到/dev/shm下再試試看
作者: blackold    時(shí)間: 2015-02-14 09:43
回復(fù) 4# volwang


    25萬(wàn)行不成問(wèn)題吧。
作者: yyt030    時(shí)間: 2015-02-15 12:31
回復(fù) 4# volwang


    量大有啥區(qū)別?這個(gè)解決很完美!
作者: volwang    時(shí)間: 2015-02-16 18:27
本帖最后由 volwang 于 2015-02-16 18:32 編輯

文本有20萬(wàn)行。
akw只處理一部分文本就退出。awk沒(méi)有處理全部文本。

回復(fù) 11# yyt030


   
作者: Herowinter    時(shí)間: 2015-02-16 18:48
回復(fù) 12# volwang

1樓的數(shù)據(jù)和你的真實(shí)數(shù)據(jù)差距很大?
否則25W行好像可以處理啊。。。
   
作者: volwang    時(shí)間: 2015-02-16 18:52
稍微有點(diǎn)差距。20w行,8列。
awk處理一部分。
20w行中第二列中有不少重復(fù)的。需要輸出第一個(gè),后續(xù)相同的不輸出。

回復(fù) 13# Herowinter


   
作者: volwang    時(shí)間: 2015-02-16 19:01
你好。過(guò)節(jié)好。
awk我試過(guò)了,少量行可以處理,行20萬(wàn)就不行了。
如果我把這個(gè)文件命為log,用for循環(huán)遍歷每一行第二列。
第一次出現(xiàn)的寫(xiě)到log2中,后續(xù)循環(huán)中,判斷l(xiāng)og2中是否含有相同字符,無(wú)則輸出到log2。
不知道這樣可行?
最后得到log2,則為輸出。

回復(fù) 13# Herowinter


   

作者: volwang    時(shí)間: 2015-02-16 19:36
原輸入文件為log;輸出文件為log2。

rm -rf log2
touch log2
for i in `cat log |awk '{print $2 }' `
do
aa=`cat log2 | grep $i `
if  [ ! -z "$aa" ] ; then
echo "have"
else
cat log |grep $i |head -1 >> log2
fi
done

這樣可否

回復(fù) 13# Herowinter


   
作者: KoomIer    時(shí)間: 2015-02-17 11:09
用python建立一個(gè)數(shù)組,然后try一下就好了
沒(méi)有就輸出,有就忽略


回復(fù) 1# volwang


   
作者: jason680    時(shí)間: 2015-02-17 15:18
回復(fù) 14# volwang

Try this way if your awk can't work properly

$ perl -lane '{print if(!$h{$F[1]}++)}' FILE
qq sss.1  ww dd  rr  ee  tt yyy  
qq sss.2  ww dd  rr  ee  tt yyy
qq sss.3  ww dd  rr  ey  tt yyy
qq sss.x1  ww dr  ur  te  wt yyy


作者: zongyaotang    時(shí)間: 2015-02-27 15:43
先把第二列重復(fù)的字符串找出來(lái)
然后對(duì)每個(gè)這樣的字符串找出其行號(hào)
如果能找出所有非第一次出現(xiàn)的行號(hào)
刪去這些行即可





歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2