美文网首页
SH-项目标识替换内容

SH-项目标识替换内容

作者: NJ_墨 | 来源:发表于2021-11-01 13:49 被阅读0次

项目文件内容替换,根据不同标识等替换对应内容
修改国际化Language语言包下.strings文件中内容

终端执行示例:

xxxx.sh /Users/xxx/Language BDemo

Xcode中运行(Run Script)
if [ "${CONFIGURATION}" = "Debug" ]; then
languatePath=${PROJECT_DIR}/ADemo/Language
${PROJECT_DIR}/clanApnam.sh $languatePath "BDemo"
echo ">>>>finish<<<<<"
fi
示例图片1.png 示例图片2.png

相关查询替换命令:

awk,sed,grep
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来
AWK是一种处理文本文件的语言。它将文件作为记录序列处理
sed是一种流编辑器,它一次处理一行内容
sed 's/abcd/#####/g' path ( 将文件所有abcd替换成#####)
sed '1,5s/abcd/#####/g' path (将文件前五行中的abcd替换成#####)
sed '/abc/,/xyz/s/eee//g' path (将abc到xvy行中的eee替换成)
sed 's////g' path (将文件中的所有/删除)

sed 可以直接替换, mac下,需要添加'',如sed -i ''
#aaa="old@cc.com"
#bbb="new@cc11.com"
#sed -i '' "s/old@cc.com/new@cc11.com/g" $firePath
#sed -i '' "s/$aaa/$bbb/g" $firePath
#sed -i '' "s|$aaa|$bbb|g" $firePath
完整脚本
#! /bin/bash

#写一个函数,调用的时候不用带括号
#终端执行示例:xxxx.sh /Users/xxx/Language BDemo
sourceNameArray=("ADemo" "BDemo" "CDemo")
function r(){
    echo $1
    echo $2
#for循环 这个``是esc下面的,意思是调用系统命令;$1指的是传进去函数里的第一变量
    rootDir=$1
    for file in `ls $1`
    do
        #这里的判断是判断是否为目录
        if [ -d $1"/"$file ]; then

            echo "文件:"$file
           #可以判断过滤
            if [ $file == "xxx" ]; then
                echo $file"此目录排除,不替换"
            else
                #用一种递归的方法来遍历子目录
               echo $1"/"$file"为目录"
                r $1"/"$file $2
            fi
        else
            echo $1"/"$file "为文件"
            #mac上使用的是bsd,而linux上使用的是gnu。
            #bsd的find命令第一个参数必须指定目录路径,而gnu可以省略第一个参数
            #linux 不需要 find  -name
            # manc上需要用 find . -name
            if echo "$file" | grep -q -E '\.strings$'; then
                echo "文件名:"$file"  开始替换 "
                firePath=$1"/"$file

                for(( i=0;i<${#sourceNameArray[@]};i++)) do
                    tempName=${sourceNameArray[I]}
                    echo "查找name: "$2"  --->"$tempName
                    if [ $2 != $tempName ]; then
                        #查找文件中是否有需要替换的内容
                        #-c :计算找到 '搜寻字符串' 的次数
                        if [ `grep -c "$tempName" $firePath` -ne '0' ];then
                            echo " ===Found!==  "$tempName

                            if [ $2 == "ADemo" ]; then

                                #邮箱中有@符号,需要特殊处理
                                newAppEmail="test\@ademo.net"
                                newAppName="ADemo"
                                oldAppName=$tempName
                                oldAppEmail="testcc\@cc.net"
                                if [ $tempName == "BDemo" ]; then
                                    oldAppEmail="test\@bdemo.com"
                                elif [ $tempName == "CDemo" ]; then
                                    oldAppEmail="support\@cdemo.com"
                                fi
                                
                                echo "oldApp:  "$oldAppName"   newApp:  "$newAppName
                                echo "oldEami:  "$oldAppEmail"   newEmail:  "$newAppEmail
                                find $1 -name $file | xargs perl -pi -e "s|"$oldAppName"|"$newAppName"|g"
                                find $1 -name $file | xargs perl -pi -e "s|"$oldAppEmail"|"$newAppEmail"|g"


                                #sed 可以直接替换, mac下,需要sed -i '', 添加''
                                #aaa="old@cc.com"
                                #bbb="new@cc11.com"
                                #sed -i '' "s/old@cc.com/new@cc11.com/g" $firePath
                                #sed -i '' "s/$aaa/$bbb/g" $firePath
                                #sed -i '' "s|$aaa|$bbb|g" $firePath

                            elif [ $2 == "BDemo" ]; then

                                newAppEmail="test\@bdemo.com"
                                newAppName="BDemo"
                                oldAppName=$tempName
                                oldAppEmail="testcc\@cc.net"
                                if [ $tempName == "ADemo" ]; then
                                    oldAppEmail="test\@ademo.net"
                                elif [ $tempName == "CDemo" ]; then
                                    oldAppEmail="support\@cdemo.com"
                                fi
                                
                                echo "oldApp:  "$oldAppName"   newApp:  "$newAppName
                                echo "oldEami:  "$oldAppEmail"   newEmail:  "$newAppEmail
                                find $1 -name $file | xargs perl -pi -e "s|"$oldAppName"|"$newAppName"|g"
                                find $1 -name $file | xargs perl -pi -e "s|"$oldAppEmail"|"$newAppEmail"|g"

                            elif [ $2 == "CDemo" ]; then

                                newAppEmail="support\@cdemo.com"
                                newAppName="CDemo"
                                oldAppName=$tempName
                                oldAppEmail="testcc\@cc.net"
                                if [ $tempName == "ADemo" ]; then
                                    oldAppEmail="service\@ademo.net"
                                elif [ $tempName == "BDemo" ]; then
                                    oldAppEmail="test\@bdemo.com"
                                fi
                                
                                echo "oldApp:  "$oldAppName"   newApp:  "$newAppName
                                echo "oldEami:  "$oldAppEmail"   newEmail:  "$newAppEmail
                                find $1 -name $file | xargs perl -pi -e "s|"$oldAppName"|"$newAppName"|g"
                                find $1 -name $file | xargs perl -pi -e "s|"$oldAppEmail"|"$newAppEmail"|g"
                            fi
                        fi
                    fi
                done

            fi
        fi
    done
}




function start(){
    if [ $1 == "" ] || [ $2 == ""]; then
        echo "dir:"$1
        echo "key:"$2
        echo "关键路径或key不能为空,示例:xxx.sh /Users/odd/Documents/DemoA/Language DemoA"
        exit
    fi
    #调用
    r $1 $2
}

start $1 $2

相关文章

  • SH-项目标识替换内容

    项目文件内容替换,根据不同标识等替换对应内容修改国际化Language语言包下.strings文件中内容 终端执行...

  • Android设备唯一标识符

    由于项目需要,最近在调用Android设备唯一标识符方案。由于项目涉及支付相关内容,对设备唯一标识符识别有较高的准...

  • 幻界风云(46)幕后推手

    幻界风云(46)幕后推手 书楼带来的包裹里并没有大-规模-杀SH-伤SH-性X-武W-器,只是几把轻便的枪Q-X械...

  • Python 18(2)  miniweb项目

    MiniWEB项目、模版、使用正则进行替换 {\%content\%} 为内容、路由、装饰器实现路由、AOP面向切...

  • 文本内容替换

    获取远程服务图片放本地,html报告中的图片资源地址需要替换为本地服务地址,因此用到了文本替换的方法。

  • everedit 行尾添加内容

    查找:\n替换:替换内容\n

  • 2019-04-09 属性读写

    属性读写 图片替换 内容替换

  • CSS2.1大纲梳理(1)

    元素 替换元素和非替换元素 替换元素 用来替换元素的内容并非由文档内容直接表示。如:img、input、texta...

  • css和文档

    元素(Element)是文档结构的基础。 替换元素和非替换元素。 替换元素:用来替换内容的部分并非由文档内容直接表...

  • linux批量替换文件夹下文件内容

    批量替换文件内容 批量替换文件夹下文件内容

网友评论

      本文标题:SH-项目标识替换内容

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