最近在处理文件的时候,遇到文件内容存在大量重复项的情况,很显然需要
文件内容去重。因为使用的是
Python
,本来想要找找
Python
文件内容去重的方法,但是
看到的基本利用
Set
或者
List
等方法(还没来得及逐一验证)
。后来,找到一个利用
Shell
脚本写的文件内容去重,用了一下觉得很赞,在这里深入的研究一下,也算是对
Shell
了
解和熟悉一下。
shell
脚本如下所示:
#!/bin/bash
lines=$(wc -l $1 | sed s/ .*//g)
lines_per_file=`expr $lines / 20`
split -d -l $lines_per_file $1 __part_$1
for file in __part_*
do
{
sort $file > sort_$file
} ">done
wait
sort -smu sort_* > $2
rm -f __part_*
rm -f sort_*
脚本运行的命令如下:
(假如文件保存的名字为:
merge_sort.sh
)
./merge_sort.sh file_to_be_sort file_sorted
下面,来说明一下脚本中几个比较重要的命令。
wc -l
命令的意思就是统计文本的行数,但是得到的结果如下图所示:
除了得到文本的所有行外,文件的名字也输出了,如果只要得到行数,后面的内容需要替
换掉。
sed
命令可以完成数据的搜索并替换,具体格式如下: