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

时间:2016-11-04 09:46:00

标签: bash sed newline

如果B有换行符,是否能够将文本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

谢谢。

1 个答案:

答案 0 :(得分:4)

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

sed '/^c/r f2' f1

这应该等同于echo "$c1" | sed "s,^c,c\n"${c2}","次尝试,在f2开头的行之后添加c文件的内容。

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