使用shell比较两个文本的差异

一般工作中会遇到比较两个文本文件的不同,类似于第二天新增数据、或者修改数据统计。我查阅资料查到一下两种方法。

说明  $1 $2 为要比较的两个文本文件  此处使用参数代替

1  grep -F -v -f $1 $2 |sort |uniq

 -f<范本文件>或--file=<范本文件>   指定范本文件,其内容含有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每列一个范本样式。

 -F或--fixed-regexp   将范本样式视为固定字符串的列表。

 -v或--revert-match   反转查找。

使用此命令可以实现上述功能,文件大小或者数量不大时,没有问题,但是当文件过大,就像我线上处理的几G的文件就将32G的内存吃的满满的,所以使用该脚本时注意内存监控。

2  cat $1 $2 | sort | uniq -d >temp.txt

    cat $2 temp.txt | sort | uniq -u > $3

该脚本思路是先求出两个文本的交集,然后用一个文件去除掉交集部分,剩下的部分也就是两个文本差异化的部分。

我同样在线上处理几G的文本,并进行内存监控,并未发现严重吃内存的现象,并且速度较比第一种也快了很多,因此建议使用该脚本来操作 。

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值