免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4047 | 回复: 2
打印 上一主题 下一主题

[文本处理] 请帮助!a与b文档对比后,按b文档顺序重新排序 [复制链接]

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
1 [报告]
发表于 2017-09-15 12:10 |显示全部楼层
回复 1# bmne

给些sample

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2017-09-22 09:42 |显示全部楼层
回复 1# bmne

  1. 把b文件split成几个文件,大小由内存来决定
  2. 然后分别处理,类似如下

  3. seq 1000 > b.txt  # 与b文件一样
  4. split -b1000 -d b.txt s

  5. awk 'FNR==5' s* |sort -R > file.test # 与a文件一样
  6. ls
  7. b.txt  file.test  s00  s01  s02  s03

  8. 执行:

  9. #>res;
  10. #rm -f tmp;
  11. for file in s*;
  12.   do  
  13.      if [ -f 'tmp' ];
  14.      then
  15.         file_in="tmp" ;
  16.      else
  17.         file_in="file.test";
  18.      fi;
  19.      awk 'NR==FNR{a[$0]=FNR;b[FNR]=$0;next}{if($0 in a){c[$0]=a[$0]}else{print >"tmp"}}END{l=asort(c,d);for(i=1;i<=l;i++){print b[d[i]] >>"res"}}' $file $file_in;
  20.   done

  21. cat res
复制代码


论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2017-09-23 07:54 |显示全部楼层
回复 21# aaaa_123

之前代码上有bug, awk 代码中文件输出和输入的文件名重了,导致tmp文件缩水, 多谢提醒

  1. seq 10000000 > b.txt   
  2. seq  10000000 > file.test
  3. split -b10000000 -d b.txt s


  4. >res;
  5. rm -f tmp;
  6. for file in s[0-9]*;   
  7. do        
  8.   if [ -f 'tmp' ];      
  9.   then         
  10.     file_in="tmp" ;      
  11.   else         
  12.     file_in="file.test";      
  13.   fi;
  14.   awk 'NR==FNR{a[$0]=FNR;b[FNR]=$0;next}{if($0 in a){c[$0]=a[$0]}else{print >"tmp1"}}END{l=asort(c,d);print l;for(i=1;i<=l;i++){print b[d[i]] >>"res"}}' $file $file_in;
  15. cat tmp1 > tmp;  
  16. done
  17. rm -f tmp*

  18. wc -l file.test b.txt res
  19. 10000000 file.test
  20. 10000000 b.txt
  21. 10000000 res
  22. 30000000 总用量

  23. diff b.txt res
  24. diff file.txt res
复制代码

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP