sed 可以将带有换行符的文本插入到其他文本中吗?

Sto*_*row 1 bash newline sed

如果 B 有换行符,sed 是否能够将文本 B 插入到文本 A 的中间?

我找到了如何使用 sed 将文本插入到其他文本中间的示例 - 但我能找到的唯一这样的示例是插入的文本是单行的。

如果插入的文本有换行符,我无法确定将文本插入其他文本的语法(甚至可能性)。有人可以帮忙吗?

我没有嫁给 sed。我同意任何解决方案,但我也很好奇这是否可以用 sed 来完成。

到目前为止,这是我尝试过的:

>c1="$(cat f1)"
>echo "$c1"
a
b
c
d
>c2="$(cat f2)"
>echo "$c2"
x
y
z
>echo "$c1" | sed "s,^c,c\n"${c2}","
sed: -e expression #1, char 9: unterminated `s' command
>echo "$c1" | sed "s,^c,c\n${c2},"
sed: -e expression #1, char 9: unterminated `s' command
Run Code Online (Sandbox Code Playgroud)

谢谢。

Aar*_*ron 5

在您的特定情况下,您可以使用sedr命令来读取文件并将其内容添加到输出流:

sed '/^c/r f2' f1
Run Code Online (Sandbox Code Playgroud)

这应该相当于您的 尝试,在以 . 开头的行之后echo "$c1" | sed "s,^c,c\n"${c2}","添加文件的内容。f2c

请注意,我不使用substitute 命令,而是使用测试每一行并为每行匹配/^c/执行ead 命令。r