Chinaunix首页 | 论坛 | 博客
  • 博客访问: 417206
  • 博文数量: 105
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 889
  • 用 户 组: 普通用户
  • 注册时间: 2016-01-23 21:45
个人简介

目前在一家电信公司就职报表开发工程师,2010年开始从事运维方面的工作,期间从事过业务维护工程师、自动化运维工程师,2016年转为报表开发工程师。有耐心,抗压力、爱折腾,喜欢研究自动化工具。

文章分类

全部博文(105)

分类: 系统运维

2017-08-08 11:22:34

脚本实现如下:
前面一篇说了400w删除2千的记录速度还行。但是超过上万的记录时候就会报参数过长,因此写了这个程序:
批量处理、批量排除的思路
#!/bin/sh
acount=$(awk -F'|' '{if($6!=null) print $6}'  20170806.UPAY.OnLineRefund |uniq -u |wc -l)
if [ $acount == 0 ]
  then
  echo "没有重复的订单、退出程序"
  exit
else
  echo "有重复的订单"
  awk -F'|' '{if($6!=null) print $6}'  20170806.UPAY.OnLineRefund |sort|uniq -d > UPAY.txt
  mv 20170806.UPAY.OnLineRefund 20170806_0.UPAY.txt
  n=$(($acount/1000))
  m=$(($n+1))
  echo "有$m批次需要删除"
  for ((i=1;i<=$m;i++))
      do
        echo "$m+++$i"
        j=$(($i-1))
        nbeg=$(($j*1000+1))
        nend=$(($i*1000))
        echo "$nbeg+++$nend"
        aa=$(sed -n "$nbeg,${nend}p"  UPAY.txt|awk  '{printf "|"$1}')
        bb=`echo $aa|sed 's/.//'`
        echo "$bb"
        grep -v -E "$bb" 20170806_${j}.UPAY.txt > 20170806_${i}.UPAY.txt
      done
 echo "end"
fi
阅读(1669) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~