我可以使用正则表达式替换出现一次变量的行:
(^.*)(OLD)(.*$)/$1$2$3\n$1NEW$3
例如:
enum{
OLD,
END
};
char *const test_token[] = {
[OLD] = "OLD",
NULL
};
将替换为
enum{
OLD,
NEW,
END
};
char *const test_token[] = {
[OLD] = "OLD",
[OLD] = "NEW",
NULL
};
对于单个出现的'OLD'变量是正确的,但不能有多个。
我可以看到为什么正则表达式不适用于多次出现,但我不知道如何改进它。
感谢您的帮助
答案 0 :(得分:1)
我无法在IDE的替换对话框中说明如何执行此操作。
使用sed:
sed '/OLD/ {p; s/OLD/NEW/g}'
虽然这对旧的seds不起作用,所以有几种选择:
perl -pe 'if (/OLD/) {print; s/OLD/NEW/g}'
awk -v "old=OLD" -v "new=NEW" '{print} $0 ~ old {gsub(old, new); print}'
答案 1 :(得分:0)
AWK:
awk '1;gsub(/OLD/,"NEW")' input
你的正则表达式也是为了替换。如果你只想要“原生正则表达式”它将是/ OLD /,替换将是“新”。