脚本实现如下:
前面一篇说了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) |