免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: wxytty
打印 上一主题 下一主题

怎样提取重复记录? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-12-09 23:06 |只看该作者

怎样提取重复记录?


  1. awk '{print $0 >> $1}' data
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
12 [报告]
发表于 2003-12-09 23:25 |只看该作者

怎样提取重复记录?

原帖由 "nocomment" 发表:
awk '{print $0 >> $1}' data

MM比我还懒
思路不错,但需要作善后处理。把单行的文件再cat到一起。

论坛徽章:
0
13 [报告]
发表于 2003-12-09 23:59 |只看该作者

怎样提取重复记录?

嘻嘻,没仔细看楼主的需求。。。

俺的代码肯定效率比较低
因为文件I/O操作比较多
汗~~

下面这个代码可以找出文本中所有第一列相同的那些记录
并将其存放在same_<N>文件中
(考虑到有可能有多组第一列相同的记录)
若没有相同记录,则存放在no_same文件中


  1. #!/bin/sh
  2. awk '{print $0 >> $1; print $1}' $1 > file_list
  3. sort -u file_list > file_list.new
  4. mv file_list.new file_list

  5. N=1
  6. for FILENAME in `cat file_list`
  7. do
  8.         LINE=`cat $FILENAME | wc -l`
  9.         if [ $LINE -eq 1 ]; then
  10.                 cat $FILENAME >> not_same
  11.                 rm -f $FILENAME
  12.         else
  13.                 mv $FILENAME same_$N
  14.                 N=`expr $N + 1`
  15.         fi
  16. done
复制代码

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
14 [报告]
发表于 2003-12-10 02:41 |只看该作者

怎样提取重复记录?

我也來想一段,不知能用否?
  1. $file=yourfile
  2. list=`cut -d ' ' -f1 $file | sort -u`
  3. for i in $list; do
  4.     grep "^$i " $file >> $file.$i
  5. done
复制代码

论坛徽章:
0
15 [报告]
发表于 2003-12-10 10:50 |只看该作者

怎样提取重复记录?

#!/usr/local/bin/bash
cat>a.txt<<eof
31  abcde
12  bcdeffeg
23 aaaaaaaaaaaaaaa
23 33333333333333
222 dddddd
12  ddddddddddd
eof
more a.txt|awk '{print $1}'>a.$$
cat a.$$
while read line
do
grep "$line" a.txt>"$line".$$
done<a.$$
rm a.*
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP