我想用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作为搜索模式获得了所需的行,但无法获得正则表达式以使用存储在NEW_IDENTIFIER中的值替换123ABCDE-3640-430C-B4E2-0E6F75AF6CA9。
我正在阅读SED并尝试一些表达。
任何帮助将不胜感激。提前谢谢。
答案 0 :(得分:0)
如果ID没有包含sed特有的任何字符,那么带地址+替换的普通sed
应该有效:
sed -i~ "/$SEARCH_PATTERN/s/{.*}/{$NEW_IDENTIFIER}/" file
答案 1 :(得分:0)
很简单。它对我有用: -
sed "/g_ExistingMachineID/s/{.*}/{$NEW_IDENTIFIER}/" yourfile.txt
刚试过以下: -
NEW_IDENTIFIER="456EFABC-4567-546C-B4E2-DA2F45AE2CD3"
echo 'g_ExistingMachineID[] = _T( "{123ABCDE-1234-312C-B4E2-0E5F15BD1CA9}" )' | sed "/g_ExistingMachineID/s/{.*}/{$NEW_IDENTIFIER}/"
输出: -
g_ExistingMachineID[] = _T( "{456EFABC-4567-546C-B4E2-DA2F45AE2CD3}" )