linux - 将 16 位标识符替换为新标识符

标签 linux bash shell sed

我想用 shell 变量“NEW_IDENTIFIER”中定义的新生成的标识符替换文件中现有的 16 位标识符。

SEARCH_PATTERN="g_ExistingMachineID"
NEW_IDENTIFIER="456EFABC-4567-546C-B4E2-DA2F45AE2CD3"

g_ExistingMachineID[] = _T( "{123ABCDE-1234-312C-B4E2-0E5F15BD1CA9}" )

所需输出

g_ExistingMachineID[] = _T( "{456EFABC-4567-546C-B4E2-DA2F45AE2CD3}" )

我使用 g_ExistingMachineID 作为搜索模式获得了所需的行,但无法获取正则表达式以将 123ABCDE-3640-430C-B4E2-0E6F75AF6CA9 替换为 NEW_IDENTIFIER 中存储的值。

我正在阅读 SED 并尝试一些表达。

如有任何帮助,我们将不胜感激。提前致谢。

最佳答案

如果 ID 不包含任何 sed 特有的字符,则带有地址 + 替换的普通 sed 应该可以工作:

sed -i~ "/$SEARCH_PATTERN/s/{.*}/{$NEW_IDENTIFIER}/" file

关于linux - 将 16 位标识符替换为新标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49722433/

相关文章:

带通配符的 Bash 脚本

windows - 以毫秒为单位的打印批处理时间

shell - 像快速失败测试一样运行 SICP Scheme 文件

linux - 在 zsh 中获取进程的 pid

android - Eclipse Android 插件 -- libncurses.so.5

javascript - ESLint 配置问题

java - 在 CentOS Linux 上从 Tomcat 访问 Tensorflow

c++ - 如何从命令行 (unix) 打印二进制 double 组

c - 为什么linux中不混合标准输入?

linux - nrpe : Network server bind failure (98: Address already in use)