shell脚本怎么修改编码

shell脚本怎么修改编码,第1张

首先,我得知道这个文件具体采用的是什么样的编码,如果是ISO-8859我将会把它转成UTF-8,其他的ASCII这些都先不做处理,这里可以使用file filename或者是enca iconv

enca需要获取下:sudo apt-get install enca

iconv的一般用法是:(可以man iconv)

-f from code 源文件编码

-t to code 目标文件编码

-o output file 保存为文件

例子:

iconv -f GB2312 -t UTF-8 -o google.txt google.txt

将google.txt的编码由GB2312更新为UTF-8

enca也同上用法,一般在脚本中对于未曾提供的语言,enca不会报错,这样可以保证脚本顺利执行

enca -L zh_CN file 检查文件编码

enca -L zh_CN -x UTF-8 file 将文件编码修改为UTF-8并覆盖文件

具体的用法都可以去查看man手册或者google之

好了,不多说,查看脚本吧!

#!/bin/bash -x

#由于之前使用windows系统来存放过一些文本文件,利用dropbox同步过来的时候,文件发生乱码,故写脚本来批量处理

#这里是对所有的需求文件进行处理,后续可根据修改目录进行处理

SUBFIX="txt html htm conf"

#cd /home/gavin/tmp

if [ -z $1 ]then

cd $PWD

else

if [ -d $1 ]then

cd $1

else

echo " $1 is not exist"

exit 1

fi

fi

for i in $SUBFIX

do

files=`find . -name "*.$i"`

for f in $files

do

type=`file $f|awk -F':' '{print $2}' |awk '{print $1}'` #获取文件类型

if [ $type = "ISO-8859" ]then

#iconv -f GB2312 -t UTF-8 -o $f $f

enca -L zh_cn -x UTF-8 $f

else

echo "$f encoding is :$type"

fi

done

done

查看文件编码file命令

file

ip.txt

查看文件编码file命令

file

ip.txt

ip.txt:

UTF-8

Unicode

text,

with

escape

sequences

一、利用iconv命令进行编码转换文件内容编码转换

iconv命令用于转换指定文件的编码,默认输出到标准输出设备,亦可指定输出文件.

用法:

iconv

[选项...]

[文件...]

有如下选项可用:

输入/输出格式规范:

-f,

--from-code=名称

原始文本编码

-t,

--to-code=名称

输出编码

信息:

-l,

--list

列举所有已知的字符集

输出控制:

-c

从输出中忽略无效的字符

-o,

--output=FILE

输出文件

-s,

--silent

关闭警告

--verbose

打印进度信息

-?,

--help

给出该系统求助列表

--usage

给出简要的用法信息

-V,

--version

打印程序版本号

例子:

iconv

-f

utf-8

-t

gb2312

aaa.txt

>bbb.txt

这个命令读取aaa.txt文件,从utf-8编码转换为gb2312编码,其输出定向到bbb.txt文件.

你可照着上面的命令格式,改改试试。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11667240.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存