这是我第一次尝试从Mac上执行此操作(我在Windows上使用repl.bat),并且我很难找到正确的语法来执行此操作。
基本上,我在一个名为defines.h的文件中有这样的东西:
#define GAME_VERSION (2060)
#define TESTHOOK
#define PRERELEASE
#define pi 3.1415926536f
#define FX32_ONE (4096)
我想替换括号之间或等于传入的环境变量之后的文本(我也想在其他文件中替换GAME_VERSION =之类的东西)
我一直在尝试使用sed,perl和awk,但似乎无法正确使用语法。有人可以通过这个告诉我吗?
到目前为止,我已设法做到了这一点:
echo "GAME_VERSION (2000)" | sed s/'([^)]*)'/'3000'/g
前2个回复根本没有改变define.h文件,我不确定我是做错了什么还是因为我没有显示更多文件的内容之前。不确定是否相关,但define.h的内容也会打印到终端控制台。
答案 0 :(得分:1)
这应该适用于两种格式:
REPLACE="5000"
sed "s/\([(=]\)\([0-9]\+\)/\1$REPLACE/g" defines.h
给出输出:
GAME_VERSION (5000)
GAME_VERSION=5000
搜索括号或等号([(=]
)后跟数字([0-9]\+
),并将其替换为环境变量$REPLACE
的内容。
答案 1 :(得分:1)
在thios特定情况下 的NewValue = 713705
sed "/^[[:space:]]*GAME_VERSION/ s/[0-9]*/${NewValue}/" define.h
假设: