gpt4 book ai didi

linux sed 查找替换同一行的内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:04:01 27 4
gpt4 key购买 nike

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文件内容如上。

我正尝试在构建期间替换文件的内容,如下所示

sh "./envScript 'app.js' 2 \"$VERSION_NUMBER ($BUILD_NUMBER) - PROD\""

我的envScript.sh如下

#!/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

问题,这部分工作,但总是更新 CURRENT_VERSION 和 CURRENT_ENVIRONMENT ,接近文件末尾,因此 getEnvironmentFile(CURRENT_ENVIRONMENT) 默认为 CURRENT_ENVIRONMENT=undefined 选项,因为

export const CURRENT_VERSION = '1.0.61 (2018.07.13.22.32) - UAT1'

在文件末尾。

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

运行脚本前的原始 app.js

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

运行命令后

sh "./envScript '../../App/Config/AppConfig.js' 2 \"$VERSION_NUMBER ($BUILD_NUMBER) - PROD\""

更新文件

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

预期结果

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)

最佳答案

问题正是 shellter 所说的。您需要使用 s 而不是使用 $a,如下所示:

 sed '/VERSION/s/UAT1/PROD/;/ENVIRONMENT/s/TEST1/PROD/' app.js

关于linux sed 查找替换同一行的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51500242/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com