使用sed用文件替换字符串,而不使用两个sed命令?

时间:2013-04-12 11:45:03

标签: regex bash shell sed posix

在自动化许可证标题的过程中,我有一个占位符:/* @@LICENSE_HEADER@@ */,我可以使用以下内容替换为名为license的文件:

sh-3.2$ sed -e $'/\/\* @@LICENSE_HEADER@@ \*\//{r license\n}' \
-e $'/\/\* @@LICENSE_HEADER@@ \*\//d' file.c

我从其他来源拼凑了这个。是否可以替换字符串,而不是发出第二个命令来删除字符串出现的行?

2 个答案:

答案 0 :(得分:1)

尝试sed -e $'/\/\* @@LICENSE_HEADER@@ \*\//{r license\n;d;}' file.c

答案 1 :(得分:0)

Sed是一种用于编辑的编程语言,因此每行可以使用多个命令。

顺便提一下,我建议您将许可证字符串更改为不包含任何特殊正则表达式字符的内容。在这里,我刚刚创建了@@@LICENSE NUMBER@@@,所以我不必继续转义正则表达式字符。毕竟,它是你的字符串,所以你可以做任何你想做的事情:

sed  '/@@@LICENSE NUMBER@@@/ {
r license.txt
d
}' file.c