• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >linux shell > shell两个文件去重的多种姿势

shell两个文件去重的多种姿势

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了mmd姿势文件,shell 文件去重,第一次进不去什么姿势,去海边拍照姿势,换种姿势去破案等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

前言

大家都知道shell在文本处理上确有极大优势,比如多文本合并、去重等,但是最近遇到了一个难搞的问题,即两个大数据量文件去重。下面来看看详细的介绍吧。

要求 

有txt文件A.txt和B.txt。

其中A为关键词和搜索量,以逗号分隔,约90万行。

B为关键词,约400万行。

需要从A中找出与B重复的关键词。

我试了N种姿势,但结果都不尽人意,最奇怪的是有些方法对小数据量的测试文件有用,一旦用在A与B上就会失败,真叫人百思不得其解。

姿势一:

awk -F, '{print $1}' A >keywords.txt
cat keywords.txt B.txt | sort | uniq -d
 
#先从A.txt种取出关键词,然后与B.txt一起打开,用sort排序,uniq -d 取出重复的行
</div>

姿势二:

awk -F, '{print $1}' A >keywords.txt
#照例先取出关键词
 
comm -1 -2 keywords.txt B.txt
#利用comm命令,显示两个文件都存在的行
</div>

姿势三:

awk -F, '{print $1}' A >keywords.txt
for i in `cat keywords.txt`
do
  A=`egrep -c "^$i$" B.txt`
  if [ $A != 0 ]
  then
    echo $i >>重复关键词.txt
  fi
done
 
#这种姿势就稍微复杂点
#首先取出关键词,然后利用for循环逐个去B.txt里面匹配(注意正则写法^$i$),如果匹配到的结果数不为0,说明这个关键词是重复的,然后输出
#这种方法的优点是稳妥,缺点是效率太TM低了,90万个词逐一与400万词匹配,shell默认又没有多线程,耗时太长。
</div>

姿势四:

awk -F, '{print $1}' A >keywords.txt
cat keywords.txt B.txt | awk '!a[$1]++'
 
#这个方法的原理其实我不太懂,awk命令实在太强大太高深了,但是这种方法又简洁又快速
</div>

其实还有一种grep -v 、grep -f 的方法,但是我没有试过,所以不在这里列出了。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

</div>

您可能想查找下面的文章:

  • shell两个文件去重的多种姿势

相关文章

  • 使用shell脚本采集系统cpu、内存、磁盘、网络等信息
  • ftp自动上传脚本分享
  • Shell实现系统时间和BIOS时间同步校准脚本分享
  • 通过短信发送LOG归类号码发送情况的shell脚本
  • linux下保留文件系统下剩余指定数目文件的shell脚本
  • 详解Windows与Linux共享文件夹互相访问
  • 浅谈安装ORACLE时在Linux上设置内核参数的含义
  • Shell脚本实现自动修改IP地址
  • 阿里云主机一键安装lamp、lnmp环境的shell脚本分享
  • Cygwin下安装vim后,vim中退格键无法正常使用的解决方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • bash: /usr/bin/autocrorder: /usr/bin/python^M: bad interpreter: No such file or directory
    • shell脚本学习指南[一](Arnold Robbins & Nelson H.F. Beebe著)
    • linux sed命令详解(推荐)
    • linux awk高级应用实例
    • 编写Bash Shell通过gnuplot绘制系统性能数据图的方法
    • linux文本处理工具及正则表达式集锦
    • 一天一个shell命令 linux文本操作系列-chmod命令用法
    • linux用户与文件基础命令介绍(1)
    • Linux/Nginx如何查看搜索引擎蜘蛛爬虫的行为
    • Linux通过命令压缩与解压缩的方法| tar, tar.gz, tar.bz2

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有