• ubuntu 查看文件编码并进行批量编码修改


    由于windows下默认文件编码为gbk或者是gb2312,所以将windows下面的文件移到linux下时,常常会出现乱码的现象。

    使用enca工具可以进行文件编码的查看。

    ubuntu下enca的安装命令:

     1 sudo apt-get install enca
     2 
     3 
     4 enca查看文件
     5 
     6 enca -L zh_CN file 查看文件编码
     7 
     8 enca -L zh_CN -x UTF-8 file 更改文件编码
     9 
    10 enca -L zh_CN -x UTF-8 < file1 > file2 不想覆盖原文件

    下面是一个脚本,批量更改文件编码 注:文件名及文件目录没有空格时有效.可查看上一篇文件批量重命名,更改后再使用此脚本更改文件编码.

     1 #!/bin/bash
     2 #将文件编码更改为UTF-8
     3 #用法
     4 #1. 将文件命名为set_encoding.sh 
     5 #2. chmod +x set_encoding.sh
     6 #3. ./set_encoding.sh 
     7 #4. 输入目录名称
     8 #5. 输入是否递归更改
     9 #$1表示是否要递归修改文件编码
    10 function change_file_encoing(){
    11 for file in $(ls -h|awk '{print $0}')
    12 do
    13 if [[ -d "$file" && $1 = y ]];then
    14 cd $file
    15 echo $file
    16 change_file_encoing $1
    17 cd ..
    18 elif [[ -f "$file" ]];then
    19 echo $file
    20 enca -L zh_CN -x UTF-8 $file
    21 fi;
    22 done; 
    23 #ecna -L zh_CN file UTF-8
    24 }
    25 
    26 read -p "please enter the dir path:" path #读取目录路径
    27 if [ ! -x "$path" ]; #判断目录是否存在且是否具有执行权限
    28 then 
    29 echo "dir path not exists"
    30 else
    31 read -p "please enter if you want to recursive?y/n:" recur #是否递归
    32 fi
    33 if [ $recur = "y" ];
    34 then
    35 cd $path
    36 change_file_encoing "y" #递归修改文件编码
    37 else
    38 cd $path
    39 change_file_encoing "n" #非递归修改
    40 fi

    涉及到部分shell,补充如下:

    字符连接:

    1 str1=$name$url #中间不能有空格
    2 str2="$name $url" #如果被双引号包围,那么中间可以有空格
    3 str3=$name": "$url #中间可以出现别的字符串
    4 str4="$name: $url" #这样写也可以
    5 str5="${name}Script: ${url}index.html" #这个时候需要给变量名加上大括号
     
    Awk主要是用于对文本文件进行处理,通常是逐行处理,其语法参数格式为:
    AWK常用参数、变量、函数详解如下:
    1 awk  'pattern + {action}' file
    (1) AWK基本语法参数详解:
    1 单引号''是为了和shell命令区分开;
    2 大括号{ }表示一个命令分组;
    3 pattern是一个过滤器,表示匹配pattern条件的行才进行Action处理;
    4 action是处理动作,常见动作为Print;
    5 使用#作为注释,pattern和action可以只有其一,但不能两者都没有。
       (2) AWK内置变量详解:
    1 FS 分隔符,默认是空格;
    2 OFS 输出分隔符;
    3 NR 当前行数,从1开始;
    4 NF 当前记录字段个数;
    5 $0 当前记录;
    6 $1~$n 当前记录第n个字段(列)。
       (3)bc运算:
        用于浮点数计算输出。通过管道使用。
    1 tatal=$(echo "34/15" | bc)


  • 相关阅读:
    struts2类型转换
    struts2拦截器
    计算机系统结构
    struts2标签
    struts2 OGNL表达式
    使用bootstrap
    Struts2-综合项目
    拦截器,课3
    struts2之OGNL
    Struts2框架
  • 原文地址:https://www.cnblogs.com/hongdoudou/p/12515058.html
Copyright © 2020-2023  润新知