如果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
谢谢。
答案 0 :(得分:4)
在您的特定情况下,您可以使用sed
' r
命令读取文件并将其内容添加到输出流:
sed '/^c/r f2' f1
这应该等同于echo "$c1" | sed "s,^c,c\n"${c2}","
次尝试,在f2
开头的行之后添加c
文件的内容。
请注意,我没有使用s
ubstitute命令,而是使用/^c/
测试每一行,并为每行匹配执行r
ead命令。