Linux使用shell对文件拆分,linux 使用shell脚本实现对大文件的去重排序 ——使用分割文件方法...

对有序的大文件的去重排序,首先确定文件大小,分割比例,直接上代码:

#!/bin/bash

#号是注释

#文件名称,改为自己的实际文件路径

#文件内容每行都类似 2ff9a2acc|8.0.0.168|Anc|6.1x64|2052|2018-01-25

split_file_name=logon.txt

#去掉空格统计文件行数

lines=`wc -l $split_file_name | sed 's/ .*//g'`

#确定等比例分割的行数,这里分成20个文件

lines_per_file=`expr $lines / 20`

#分割文件 -d可以设置文件大小,这里没设置, -l设置文件行数,这里设置了 $lines_per_file 行

#分割后的文件类似 __part_logon.txt01 __part_logon.txt02

split -d -l $lines_per_file $split_file_name __part_$split_file_name

#循环处理__part_开头的文件

for file in __part_*

do

{

#按照文件中的|符号分割排序 -r -k2,2表示对8.0.0.168这一列排序 -r排序

#然后去重文件 -u -k1,1 -k3,3表示同时对2ff9a2acc列和Anc列去重

# -u表示去重 -o表示写入文件 这里是写入以sort_开头的文件

sort -f -t "|" -r -k2,2 $file | sort -f -t "|" -u -k1,1 -k3,3 -o sort_$file

}

done

#同时对 sort_开头的文件去重并输出覆盖原来的logon.txt文件

sort -smu sort_* > $split_file_name

#然后删除分割的与分割排序去重的文件

rm -f __part_*

rm -f sort_*

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值