1.7 将文本文件去重并导入MySQL数据库
我们在工作中经常会碰到这样的情况:获取了一些文本数据,但由于其文件太大(超过1GB),无法直接读取。因此,需要将这些文本文件数据库化并去重,从而提高工作效率。
1.7.1 文件排序命令sort
sort命令在Linux里的作用非常大。它可以将文件排序,并将排序结果以标准形式输出。sort命令既可以从特定的文件中获取,也可以从标准形式的输入中获取,其格式如下。
· -b:忽略每行前面的空格。
· -c:检查文件是否已经按照顺序排列。
· -d:在排序时,处理英文字母、数字及空格字符,忽略其他字符。
· -f:在排序时,将小写字母视为大写字母。
· -i:在排序时,除了040~176的ASCII字符,忽略其他字符。
· -m:将几个序号的文件合并。
· -M:将前三个字母按照月份的缩写排序。
· -n:按照数值大小排序。
· -o<输出文件>:将排序结果存入指定文件。
· -r:反向排序。
· -t<分隔字符>:指定排序时所用的栏位分隔字符。
· +<起始栏位>-<结束栏位>:以指定的栏位排序(由起始栏位开始,到结束栏位的前一栏位结束)。
sort命令以文件或文本中的每一行为单位进行比较。比较原则是:从首字符开始,依次按ASCII码值进行比较,将比较结果按照升序输出。最简单的sort命令是“sort filename”。
1.7.2 去重命令uniq
uniq命令用于检查和删除文本文件中重复出现的行和列,其格式如下。
· -c或--count:在每个行/列的旁边显示其重复出现的次数。
· -d或--repeated:仅显示重复出现的行/列。
· -f<栏位>或--skip-fields=<栏位>:不比较指定的栏位。
· -s<字符位置>或--skip-chars=<字符位置>:不比较指定的字符。
· -u或--unique:仅显示出现一次的行/列。
· -w<字符位置>或--check-chars=<字符位置>:指定需要比较的字符。
· --help:显示帮助信息。
· --version:显示版本信息。
· [输入文件]:指定已经完成排序的文本文件。
· [输出文件]:指定需要输出的文件。
最简单的uniq命令是“uniq filename”,表示将filename文件中相邻的重复内容去掉,对大量数据去重很有帮助。