在自动化许可证标头的过程中,我有一个占位符:/* @@LICENSE_HEADER@@ */
,我可以将其替换为license
具有以下名称的文件:
sh-3.2$ sed -e $'/\/\* @@LICENSE_HEADER@@ \*\//{r license\n}' \
-e $'/\/\* @@LICENSE_HEADER@@ \*\//d' file.c
我是从其他来源拼凑起来的。是否可以替换字符串,而不是发出第二个命令来删除字符串出现的行?
尝试sed -e $'/\/\* @@LICENSE_HEADER@@ \*\//{r license\n;d;}' file.c
Sed 是一种用于编辑的编程语言,因此您可以每行使用多个命令。
顺便说一句,我建议您将许可证字符串更改为不包含任何特殊正则表达式字符的内容。在这里,我刚刚做到了@@@LICENSE NUMBER@@@
,所以我不必一直转义正则表达式字符。毕竟,它是你的字符串,所以你可以随心所欲地制作它:
sed '/@@@LICENSE NUMBER@@@/ {
r license.txt
d
}' file.c