我需要使用多行paragrah替换文件中的标记,如果段落表示为字符串,则会在其中包含多个断路器。
如果我使用sed通常用于字符串替换字符串,新字符串中的断路器会抱怨。
所以现在我想打开文件并寻找那个令牌位置,然后从那里将新内容写入文件,但不知道如何实现。有人可以帮忙吗?
编辑:
看起来我可能可以将文件和内容作为数组插入,然后在perl中使用splice。可能不是最简单的方法。
答案 0 :(得分:1)
perl -i -pe's/token/foo\nbar\nbaz\n/g' file
您无法真正插入文件。就像插入字符串一样,您必须先将字符串的其余部分移开。使用文件,只需复制整个文件即可。
提供的代码打开file
,删除file
,创建file
,然后从打开的句柄复制(带替换)到新句柄。
我的理解是sed
也可以这样做。我的理解是sed
也使用-i
来启用此功能。
答案 1 :(得分:1)
退房:How do I change, delete, or insert a line in a file, or append to the beginning of a file?
最简单的解决方案是使用perl的$INPLACE_EDIT
,可以选择像ikegami所展示的一个衬里,或者使用Tie::File
。