本过程中涉及到的linux的命令有:split, iconv, cat
问题:有一个3G的文本a.txt,编码格式为gbk,现在需要对其进行转换成为utf-8。
难点:iconv的转换是在内存中进行的,因此3G大小的文本,无法进行直接转换。
思路:先利用split进行文件切分,然后对每一个字文件进行ivonv转换,最后进行cat合并。
具体操作如下:
1) ll -h a.txt 查看文件的大小,2.9G
2) wc -l a.txt 查看文件的行数,9千200万行
3) split -l 20000000 a.txt chunk 按照每个文件2千万行进行切割,共分成5个文件
4) 进行转换
iconv -f gbk -t utf-8 chunka > chunka_utf8 -c
iconv -f gbk -t utf-8 chunkb > chunkb_utf8 -c
iconv -f gbk -t utf-8 chunkc > chunkc_utf8 -c
iconv -f gbk -t utf-8 chunkd > chunkd_utf8 -c
iconv -f gbk -t utf-8 chunke > chunke_utf8 -c
5) rm chunka chunkb chunkc chunkd chunke 删除原文件
6) cat chunk* > a.txt_utf8 进行合并
至此,工作完成。