繁体   English   中英

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

[英]Replacing a string with file using sed, without using two sed commands?

在自动执行许可证标头的过程中,我有一个占位符: /* @@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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM