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

Chinaunix

標題: shell如何得到一個文件里相同的行 [打印本頁]

作者: mousejsh    時間: 2008-02-20 21:04
標題: shell如何得到一個文件里相同的行
1.txt
43 141
31 3
43 111
21 5
92 3
31 52
62 2
43 1
75 9
我想要得到下面這個結果。
2.txt
31 3
31 52
43 1
43 111
43 141
請問怎么用shell得到這樣子的結果?
#!/bin/bash
awk '{print $1,$2}' 1.txt |sort > 2.txt

作者: jinl    時間: 2008-02-20 21:31

  1. shtest$ cat a.txt
  2. 43 141
  3. 31 3
  4. 43 111
  5. 21 5
  6. 92 3
  7. 31 52
  8. 62 2
  9. 43 1
  10. 75 9

  11. shtest$ awk '{a[$1]++;b[$1""a[$1]]=$0} END{ for (i in a) if (a[i]>1) for (j=1;j<=a[i];j++) print b[i""j]}' a.txt
  12. 31 3
  13. 31 52
  14. 43 141
  15. 43 111
  16. 43 1
復制代碼

[ 本帖最后由 jinl 于 2008-2-21 11:23 編輯 ]
作者: mousejsh    時間: 2008-02-20 21:57
是不是就是一個二維的for?
作者: jinl    時間: 2008-02-20 22:10
原帖由 mousejsh 于 2008-2-20 21:57 發(fā)表
是不是就是一個二維的for?

二維數(shù)組,當然要用兩次for來遍歷了

還有一個辦法,通過兩次讀入文件來處理
awk 'NR==FNR {a[$1]++} NR>FNR {if (a[$1]>1) print $0}' ufile ufile

[ 本帖最后由 jinl 于 2008-2-20 22:21 編輯 ]
作者: ly5066113    時間: 2008-02-21 09:38
  1. awk '{(++a[$1]==1)?b[$1]=$0:b[$1]=$0"\n"b[$1]}END{for(i in a) if(a[i]>1) print b[i]}' urfile
復制代碼

作者: geminis    時間: 2008-02-21 10:11
cat 1.txt |sort -k1 -n|grep ^[^2679]
作者: blackold    時間: 2008-02-21 10:33
原帖由 mousejsh 于 2008-2-20 21:04 發(fā)表
1.txt
43 141
31 3
43 111
21 5
92 3
31 52
62 2
43 1
75 9
我想要得到下面這個結果。
2.txt
31 3
31 52
43 1
43 111
43 141
請問怎么用shell得到這樣子的結果?
#!/bin/bash
awk '{print $ ...

  1.   comm -13 <(sort 1.txt|uniq -w 2 -u) <(sort 1.txt)
復制代碼

作者: lovelyarry    時間: 2008-02-21 11:00
sort 1.txt|awk '{if($1==a){if(c) print b;print $0;c=0}else{c=1} a=$1;b=$0;}'
作者: mcolinc    時間: 2008-02-21 11:06
我有個問題
我寫的代碼是nawk 'a[$1]++ END{if(a[$1]>0) print}' 1.txt
為什么出來的結果是
43 111
31 52
43 1
錯在哪里呢?
望指教
作者: jiayisuse    時間: 2008-02-21 12:08
awk '{a[$1]++}END{while(getline<"filename"){if(a[$1]>1) print}}' filename | sort




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