sed 匹配模式的第二次出现

sed 匹配模式的第二次出现
$Subj .= "HAD PROBLEMS";

if ($To) {
    $Cc = "abc\@xyz.com";
}
else {
    $Cc = "abc\@xyz.com";
}

我将上述文本保存在一个文件中。我需要将 $Cc 中的电子邮件 ID 替换为新的电子邮件 ID。

我有以下 sed 命令来执行此操作。

sed '\|HAD PROBLEMS|,/}/ s/$Cc = (\"[A-Za-z0-9])(.)([A-Za-z0-9]*)\@xyz.com\"/\$Cc = "new email\@xyz.com"/' test.txt

此命令将仅替换 if {} 块中的 $Cc 变量($Cc 第一次出现)的电子邮件 ID,因为我的结束匹配模式是“}”。我也想替换第二个 $Cc 中的电子邮件 ID。我如何匹配第二次出现的“}”?

答案1

如果您想将抄送地址替换为新的电子邮件地址,请尝试以下操作

$ sed 's/\$Cc.*/\$Cc="new_mail\@abc.com"/g' input.txt
$Subj .= "HAD PROBLEMS";

if ($To) {
    $Cc="[email protected]"
}
else {
    $Cc="[email protected]"
}

相关内容