2016-11-04 29 views
1

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

我找到了如何使用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

用'^ M'(用CTRL-V,CTRL-M获得)改变'\ n'。 – mouviciel

回答

4

在特定情况下,你可以使用sedr命令读取一个文件,并将其内容输出流:

​​3210

这应该是相当于你echo "$c1" | sed "s,^c,c\n"${c2}","尝试,增加的内容f2文件以c开头。

请注意,我不使用s ubstitute命令,而是使用/^c/对每行进行测试,并对每行匹配执行r ead命令。

+0

有趣。您的解决方案奏效我必须研究这个sed选项。谢谢。 – StoneThrow

+0

'sed'比它的众所周知的'''有更多的命令,但是从经验来说,你可以走过去几年而没有发现它们:)至少检查'/ test /'语法,删除特定行('/test/d')或在特定行上执行多个操作(例如'/ test/{N; s/pattern/repl /}'用于两行替换) – Aaron

相关问题