Perl:如何用段落替换文件中的字符串

时间:2014-05-08 19:25:54

标签: perl sed

我需要使用多行paragrah替换文件中的标记,如果段落表示为字符串,则会在其中包含多个断路器。

如果我使用sed通常用于字符串替换字符串,新字符串中的断路器会抱怨。

所以现在我想打开文件并寻找那个令牌位置,然后从那里将新内容写入文件,但不知道如何实现。有人可以帮忙吗?

编辑:

看起来我可能可以将文件和内容作为数组插入,然后在perl中使用splice。可能不是最简单的方法。

2 个答案:

答案 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