linux下文件字符集转化实战篇

------------------------------------------

为什么转换编码,起因:分析应用程序日志,文件编码格式gb2312(含中文字符),

通过linux shell脚本从日志中提取出需要的字段并生成有固定符号隔离的文本文件导入到mysql数据库,

mysql建立的库字符集是utf8(特殊原因没有改成gb2312),由于原始的日志文件是gb2312格式,

通过shell生成的最终文件编码格式也是gb2312编码,所以才需要用到编码转换,

mysql库字符集编码必须与导入的文本文件编码格式一致,才能顺利导入。

脚本

# vi x

#!/bin/sh

ts=`(date +%Y%m%d)`

#targetdir=/root/siji/

#cd $targetdir

cat alertlog | grep $ts | grep -a '级' > c34log

# 逐一取需要的字段,并用;号隔开

cat c34log | awk '{print $1}' | sed 's/.*$/&\;/g'>s1

cat c34log | awk '{print $2}' | sed 's/.*$/&\;/g'>s2

cat c34log | awk '{print $3}' | sed 's/.*$/&\;/g'>s3

cat c34log | awk '{print $4}' | sed 's/.*$/&\;/g'>s4

cat c34log | awk '{print $5}' | sed 's/.*$/&\;/g'>s5

cat c34log | awk -F'(' '{print $2}' | awk -F')' '{print $1}' | sed 's/%//g' | sed 's/.*$/&\;/g' >s6

# 合成各个字段,生成最终文本文件

paste s1 s2 s3 s4 s5 s6 > all

# 把含中文的文本文件转换成的utf8编码格式

enca -L zh_cn -x utf8 all

# 导入数据库

/usr/local/mysql/bin/mysql -h 127.0.0.1 -u root -pYOUR_PASSWORD <sql

sql文件内容(sql语句)

# vi sql

# 使用alertlog数据库

use alertlog;

# 导入生成的all文本文件,其中用;隔离各个字段,回车隔离每行

load data local infile 'all' into table c3log fields terminated by ';' lines terminated by '\n';

# chmod 711 x

一:字符编码的转换工具

1.多平台方法:

iconv 提供标准的程序和API来进行编码转换;

convert_encoding.py 基于Python的文本文件转换工具;

decodeh.py 提供算法和模块来谈测字符的编码;

2.Linux:

recode 转换文件编码;

Utrac 转换文件编码;

cstocs 转换文件编码;

convmv 转换文件名编码;

enca 分析给定文件的编码;

3.Windows:

cscvt 字符集转换工具;

二:linux下查看文件编码

1. 在vi中查看文件编码

:set fileencoding

2. 用enca强大的查看编码工具

# 查看文件编码

# enca -L 现在文件的语言 -d 需查看编码的文件名

如 enca -L zh_cn -d test_zh_cn.file

------------

# enca -l language 查看支持的语言

三. linux转换文件编码

1.enca转化编码(强烈推荐enca工具)

# enca -L 现在文件的语言 -x 需要转换编码 需要转换编码的文件

如 enca -L zh_cn -x utf8 test_zh_cn.file

2. iconv转换,这个工具不好使!经常转化不成功

iconv -f 文件原来编码 -t 需要转换的编码 需要转换的编码的文件 -o 转换编码后的文件

或者

iconv -f 文件原来编码 -t 需要转换的编码 需要转换的编码的文件 > 转换编码后的文

转载于:https://blog.51cto.com/wanwentao/761716

linux下文件字符集转化实战篇相关推荐

  1. LINUX下文件字符集编码查看与转换并文件名编码转换

    检查文件编码file命令 file ip.txt(加上-i选项可强制显示字符集) ip.txt: UTF-8 Unicode text, with escape sequences 一.运用iconv ...

  2. Linux下的shell脚本实战之用户创建

    Linux下的shell脚本实战之用户创建 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 二.脚本内容 三.运行脚本 一.脚本要求 1.该脚本提示用户创建用户名和密码 2.判断输入的用户名是 ...

  3. caffe框架下目标检测——faster-rcnn实战篇操作

    原有模型 1.下载fasrer-rcnn源代码并安装 git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git 1) ...

  4. Linux下文件加密方法总结

    Linux下文件加密方法总结 为了安全考虑,通常会对一些重要文件进行加密备份或加密保存,下面对linux下的文件加密方法做一简单总结: 方法一:gzexe加密 这种加密方式不是非常保险的方法,但是能够 ...

  5. linux下文件删除的原理精华讲解(考试题答案系列)

    说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://oldboy.blog.51cto.com/2561410 ...

  6. linux下目标文件的类型6,Linux下文件类型

    Linux下文件的类型是不依赖于其后缀名的,但一般来讲: .o,是目标文件,相当于windows中的.obj文件 .so 为共享库,是shared object,用于动态连接的,和dll差不多 .a为 ...

  7. linux中的文件夹压缩文件,linux将文件拷贝到目录下Linux下文件的压缩与打包详解...

    在Linux中,有很多的压缩命令.利用这些压缩命令,可以方便的从网络上下载大型的文件.同时,我们知道,Linux文件的扩展名是没有特殊意义的,不过,因为Linux下存在着许多压缩命令,所以为了方便记忆 ...

  8. c 调用 linux驱动程序,Linux下的C编程实战(五)――驱动程序设计

    Linux下的C编程实战(五) ――驱动程序设计 1.引言 设备驱动程序是操作系统内核和机器硬件之间的接口,它为应用程序屏蔽硬件的细节,一般来说,Linux的设备驱动程序需要完成如下功能: (1)初始 ...

  9. linux拷贝文件函数,linux下文件操作的各个函数

    作者:HoytEmail:hoytluo@21cn.com 前言: 我们在这一节将要讨论linux下文件操作的各个函数. 文件的创建和读写 文件的各个属性 目录文件的操作 管道文件 --------- ...

最新文章

  1. 根据基因或者蛋白的id提取序列---extract_seq.exe
  2. 台式机BIOS被加密后密码忘记解决办法
  3. Facebook称其新的AI技术可以更快发现仇恨言论
  4. 异常 try catch finally return 执行关系 MD
  5. Excel导入SQL数据库出现的问题
  6. 每个电商企业都应该分析的9种数据
  7. ★★iPhone越狱后必装软件和一些心得教程,送给广大的小白们,希望你们能从小白变成“小黑”★★
  8. 常见的立体匹配算法介绍
  9. qtp如何软件测试,QTP测试流程
  10. 使用IEEE802.1Q VLAN实现单线复用之牛刀小试篇
  11. AFX_EXT_CLASS的使用
  12. sense8影评摘抄
  13. 用于科学计算机的计算器特点是什么,科学计算器有哪些功能
  14. 五险一金,你真的懂吗
  15. mac上metersphere本地开发环境搭建
  16. ASP.NET的三层架构(DAL,BLL,UI)
  17. edge浏览器什么相当于ie的中低_Edge和IE的区别,Edge浏览器和IE哪个更好用呢?
  18. 匹兹堡大学申请条件计算机科学,匹兹堡大学工程学院计算机科学专业申请条件...
  19. 程序员一生必读的书籍
  20. 游戏服务器被ddos攻击怎么办,如何防御?

热门文章

  1. ASP.Net ViewState的实现
  2. C++中struct的使用
  3. 运动目标跟踪__kalman
  4. opencv图像处理梯度边缘和角点
  5. 【linux】图形界面基础知识(X、X11、GNOME、Xorg、KDE的概念和它们之间的关系)
  6. android怎么监听多点触摸_什么是多点触控技术,有哪些用途
  7. linux db2 修改日志路径,db2中更改日志文件大小及其个数
  8. java exception用法_JavaException的使用
  9. integer比较_傻傻分不清?Integer、new Integer() 和 int 的面试题
  10. Java项目:后台管理系统脚手架项目(java+SpringBoot+FreeMarker+mysql+JSP)