【发布时间】:2018-09-01 06:24:21
【问题描述】:
需要 Shell/Bash Geeks 的帮助,尤其是在 Mac OS 上
我想在一堆源文件中搜索一个模式,但想替换具有该模式的行中的另一个字符串。
例如:
Private const String myTestString = @“VAL15”; // STRING-REPLACE-VAL##
在这里,我想在我的源文件中搜索模式“STRING-REPLACE-VAL##”,然后将 VAL15 替换为 VAL20。
输出:
private const String myTestString = @“VAL20”; // STRING—REPLACE-VAL##
尝试了下面的命令,但没有按预期工作。
sed -i '.bkp' '/,STRING—REPLACE-VAL##/ {; s/,VAL15,/,VAL20,/;}' myTestFile.cpp
Q2 - 是否可以搜索STRING—REPLACE-VAL##,然后在同一行中搜索匹配模式@"VAL??",并将15 替换为20。
sed 很容易支持搜索和替换相同的模式,但不确定 sed 是否支持搜索模式但替换匹配行中的另一个字符串?
任何帮助将不胜感激。提前致谢。
【问题讨论】:
-
请将您的示例包装在代码标签中,并更准确地说明您的要求。
-
上述帖子中的共享命令,即“sed -i '.bkp' '/,STRING-REPLACE-VAL##/ {; s/,VAL15,/,VAL20,/;}' myTestFile。 cpp”,但不允许编辑相同的内容。
-
请注意,当您在 SO 中输入或编辑问题时,您会在下方看到预览。还有一个带有帮助图标的黄色栏,让您知道如何进行格式化等。
-
Stack Overflow 不是代码编写服务。请出示您的代码。由于 Stack Overflow 向您隐藏了关闭原因:寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example。
-
@jww -- 刚刚遇到这个 -- 虽然 OP 没有正确格式化文本(请注意,这是他们的第一篇文章),但他们确实提到了一个具体问题,所需的行为,并显示了尝试解决无效的问题。