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

Chinaunix

標題: 緊急求助,awk如何根據(jù)某一列去除重復的記錄! [打印本頁]

作者: baochangjin    時間: 2011-08-25 23:02
標題: 緊急求助,awk如何根據(jù)某一列去除重復的記錄!
例子如下:
文件a是如下的記錄
0052850101003|20|285|410010001|module disconnected|2|1|1|
0052850101003|20|285|410010001|module disconnected|2|2|1|
0052850101003|22|285|410010001|module disconnected|2|1|1|
0052850101003|21|285|410010001|module disconnected|2|1|1|
0052850101003|21|285|410010001|module disconnected|2|2|1|

用awk如何根據(jù)第二列的值來去除重復的,請注意是去掉重復的,一次都不要。
要的結(jié)果應(yīng)該是只有:
0052850101003|22|285|410010001|module disconnected|2|1|1|

這一行的。
因為20的有重復了就不要了,21的也重復了就不要了。

目的是想取記錄中第二列的值只出現(xiàn)一次的那條記錄。

懇請大蝦們幫助呀!。!在線等待中呀!。!
作者: Shell_HAT    時間: 2011-08-25 23:09
  1. awk -F '|' 'NR==FNR{a[$2]++;next}a[$2]==1' urfile urfile
復制代碼

作者: ywlscpl    時間: 2011-08-26 08:20
  1. awk -F '|' '{a[$2]++; b[$2]=$0}END{for (i in a) if (a[i]==1) print b[i]}' file
復制代碼

作者: waker    時間: 2011-08-26 08:30
uniq -s14 -w2 -u  urfile
作者: expert1    時間: 2011-08-26 09:29
這種uniq 吧,看下-s參數(shù)
作者: rdcwayx    時間: 2011-08-26 09:43
uniq 只在這個特例有效, 如果第二列的數(shù)字有一位,兩位,三位數(shù)的話,就要出錯了。awk 則沒有這個問題。
作者: baochangjin    時間: 2011-08-26 09:53
ywlscpl 發(fā)表于 2011-08-26 08:20



    這位大蝦可以幫忙解釋一下嗎??蝦米意思呀?
作者: Shell_HAT    時間: 2011-08-26 09:56
回復 5# expert1


#uname
FreeBSD
#uniq -s14 -w2 -u  urfile
uniq: illegal option -- w
usage: uniq [-c | -d | -u] [-i] [-f fields] [-s chars] [input [output]]

FreeBSD、HP-UX等用回表示鴨梨山大
$ uname
HP-UX
$ uniq -s14 -w2 -u  urfile
uniq: illegal option -- w
Usage: uniq [-cdu] [-f Fields] [-s Chars] [-Fields] [+Chars] [InFile [OutFile]]

作者: expert1    時間: 2011-08-26 10:04
回復 8# Shell_HAT


沒辦法,linux/unix家族太多分支了。
作者: chhuma    時間: 2011-08-26 10:41
回復 1# baochangjin


    awk程序文件名稱2.awk, 程序內(nèi)容:
BEGIN {
  FS = "|"
  OFS = "|"
}

{
  if (!dup[$2])
  {
    cont[$2] = $0;
  }
  dup[$2] = dup[$2] +1;
}


END {
  for (key in dup) {
      if (dup[key] == 1) {
        print cont[key]
      }
  }
}

運行awk程序:
awk -f 2.awk 2.txt
作者: zooyo    時間: 2011-08-26 11:54
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: baochangjin    時間: 2011-08-26 14:03
回復 3# ywlscpl


    求解釋。!
作者: baochangjin    時間: 2011-08-26 14:05
zooyo 發(fā)表于 2011-08-26 11:54



    具體解釋下唄。3Q!
作者: zooyo    時間: 2011-08-26 14:08
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: baochangjin    時間: 2011-08-26 21:47
awk -F"|" '{a[$2]++;b[$2]=$0}END{for(i in a){if(a[i]==1)print b[i]}}'

不過還是不怎么明白這個a是如何來計數(shù)的??
a[$2]表示什么?
還有b[$2]
作者: zm_yk    時間: 2011-09-07 12:57
ywlscpl 發(fā)表于 2011-08-26 08:20



   awk -F '|' '{a[$2]++; b[$2]=$0}END{for (i in a) if (a==1) print b}' file  

誰能解釋下這條語句的意思?
作者: mpstat    時間: 2011-09-07 13:09
  1. uniq -s14 -w2 -u file
復制代碼

作者: mpstat    時間: 2011-09-07 13:10
回復 2# Shell_HAT


    這種打開兩次的方法實在太淫蕩了。。。
   我一次又一次的見證你們這種淫蕩
作者: Shell_HAT    時間: 2011-09-07 18:39
回復 18# mpstat


人不淫蕩枉少年
作者: hypocrite123    時間: 2011-09-07 22:06
呵呵,我的這個不知道成不成。


for i in `cat a|awk -F "|" '{print $2}'|sort -u`
do
grep $i a >> b.out
done
作者: shinesoft    時間: 2011-09-25 14:34
提示: 作者被禁止或刪除 內(nèi)容自動屏蔽
作者: fantingftt    時間: 2013-10-05 22:11
回復 3# ywlscpl
lz,無意中看到這個帖子,那現(xiàn)在需求變化,對于重復的數(shù)據(jù)只保留一行,那這個用awk該怎樣實現(xiàn)?


   
作者: 惟吾無為    時間: 2013-10-06 12:52
回復 22# fantingftt


    保留第一行嗎,你樓上的就是.
作者: fantingftt    時間: 2013-10-06 20:39
回復 23# 惟吾無為
那能否解釋說明?

   
作者: 惟吾無為    時間: 2013-10-07 11:51
回復 24# fantingftt

* a[$2]++ 值從0遞增
* !: 0變1, 非0變0
* 1默認print $0, 0無操作.




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