美文网首页
shell脚本实战之查找未使用的国际化字符串

shell脚本实战之查找未使用的国际化字符串

作者: 某非著名程序员 | 来源:发表于2020-07-19 07:32 被阅读0次
    #!/bin/bash
    #过滤出工程中未使用的国际化字符串
    
    path="../BLing/Classes/Resource/zh-Hans.lproj/Localizable.strings"
    target_folder1="../BLing/Classes/Section" #指定目录
    target_folder2="../BLing/Classes/Main"
    unusing_localizable_result="unusing_localizable_log"
    #白名单
    white_array=("BLing" "//")
    
    function array_contains_value(){
        array=$1
        value=$2
        if [[ "${array[@]}"  =~ "$value" ]]; then
          return 0
        elif [[ ! "${array[@]}"  =~ "$value" ]]; then
          return 1
        fi
    }
    
    function unusing_localizable_log()
    {
        echo "">$unusing_localizable_result #清除文件
        
        sed -i "" 's/ //g' $path #剔除国际化中的空格,会修改源文件
        
        #过滤出=的行并截取第一列放入数组中
        res_arr=(` grep "=" $path | cut -d= -f1 `)
        for var in ${res_arr[@]}
        do
            array_contains_value white_array $var
            if [ $? != 0 ];then
                grep -n $var -r $target_folder1 $target_folder2
    
                if [ $? != 0 ]; then
                    echo $var>>$unusing_localizable_result
                fi
            fi
        done
    }
    
    unusing_localizable_log
    

    1.使用说明

    1. path是国际化文件路径
    2. target_folder1和target_folder2需要遍历的文件夹路径,可以指定多个
    3. unusing_localizable_result是工程中未使用的国际化字符串筛选出的结果
    4. white_array配置的白名单,比如工程名,可以过滤掉

    2.思路

    1. 剔除国际化的空格
    2. grep匹配出=的行,再按=分割获取第一列,即国际化的key
    3. 遍历所有的key在指定的目录下查找,如果未找到则写入unusing_localizable_result文件中

    总结:

    1. 熟悉并应用shell语法
    2. 使用脚本来解决一些问题
    3. 脚本在找到并确定后,可以剔除过滤出的行
      sed -i "" '/匹配的字符/d' $file_name

    相关文章

      网友评论

          本文标题:shell脚本实战之查找未使用的国际化字符串

          本文链接:https://www.haomeiwen.com/subject/nevfkktx.html