首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux查找同一行的替换内容

问linux查找同一行的替换内容
EN

Stack Overflow用户
提问于 2018-07-24 13:44:50
回答 1查看 131关注 0票数 1
代码语言:javascript
复制
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.TEST1
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)

app.js文件内容如上。

在构建过程中,我试图替换文件的内容,如下所示

代码语言:javascript
复制
sh "./envScript 'app.js' 2 \"$VERSION_NUMBER ($BUILD_NUMBER) - PROD\""

我的envScript.sh如下所示

代码语言:javascript
复制
#!/bin/bash
if [ $# == 3 ]; then
    sed -i '' '/export const CURRENT_VERSION =/d' $1
    sed -i '' '/export const CURRENT_ENVIRONMENT =/d' $1
    sed -i '' '$a\
    export var CURRENT_VERSION = '"'$3'" $1
    case $2 in
        0)
            sed -i '' '$a\
            export var CURRENT_ENVIRONMENT = ENVIRONMENT.UAT1' $1
        ;;
        1)
            sed -i '' '$a\
            export var CURRENT_ENVIRONMENT = ENVIRONMENT.UAT2' $1
        ;;
        2)
            sed -i '' '$a\
            export var CURRENT_ENVIRONMENT = ENVIRONMENT.PROD' $1
        ;;
    esac
else
    echo "You need to pass AppConfig.js path as a parameter"
fi

problem,这部分工作,但总是在文件末尾更新CURRENT_VERSION和CURRENT_ENVIRONMENT,因为getEnvironmentFile(CURRENT_ENVIRONMENT)默认为CURRENT_ENVIRONMENT=undefined选项。

代码语言:javascript
复制
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'

在文件的末尾。

请求帮助:我们如何使用sed在文件中的同一行进行替换编辑,在这种情况下基本上可以找到和替换,这样getEnvironmentFile(CURRENT_ENVIRONMENT)在调用之前总是会找到CURRENT_ENVIRONMENT,并且不会默认为未定义的。任何帮助都是非常感谢的。

运行脚本之前的原始app.js

代码语言:javascript
复制
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.TEST1
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)

当前修改的app.js

在运行命令之后

代码语言:javascript
复制
sh "./envScript '../../App/Config/AppConfig.js' 2 \"$VERSION_NUMBER ($BUILD_NUMBER) - PROD\""

更新文件

代码语言:javascript
复制
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - PROD'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.PROD

预期结果

代码语言:javascript
复制
export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - PROD'
export const CURRENT_ENVIRONMENT = ENVIRONMENT.PROD
export const environmentVariable = getEnvironmentFile(CURRENT_ENVIRONMENT)
EN

回答 1

Stack Overflow用户

发布于 2018-07-25 08:31:34

问题就在于炮弹者说的是什么。您需要使用的不是$a,而是s,如下所示:

代码语言:javascript
复制
 sed '/VERSION/s/UAT1/PROD/;/ENVIRONMENT/s/TEST1/PROD/' app.js
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51500242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档