美文网首页
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