使用\n
来指示换行符。
:~> sed "s|string1|#include \"test.h\"\n#include \"release.h\"|g"
将打印
#include "test.h"
#include "release.h"
要求
:~> echo sleep100 | sed "s|sleep100|\
for (int i=0; i< 100; i++){\n\
sleep(1);\n}|g"
将打印,您可以输入空格的格式的循环构建
for (int i=0; i< 100; i++){
sleep(1);
}
有了一点回旋的编码你可以EV在sed命令的每一行的开始处保留必要的空白。
:~> bs4="$(printf '%b' '\b' '\b' '\b' '\b')" ;\
echo sleep100 | sed "s|sleep100|\
${bs4}for (int i=0; i< 100; i++){\n\
sleep(1);\n}|g"
的伎俩的本质是克服的sed
是不同的方式解释\b
逃逸的限制。我们不使用转义序列,而是使用实际的退格字符来吞噬多余的空格。
P.S.你可以,只要你用反斜杠分别逃脱他们作为 \$
,\%
和\*
有特殊字符,如$
,%
和*
在替换式。
真正的问题是我想做出“多线sed表达式”的工作。喜欢在sed表达中包含行连续。当我使用“\”作为连线时。它没有终止'命令错误。谢谢 – nathan