Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl:如何用段落替换文件中的字符串_Perl_Sed - Fatal编程技术网

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

Perl:如何用段落替换文件中的字符串,perl,sed,Perl,Sed,我需要用多行paragrah替换文件中的一个标记,如果段落表示为字符串,则其中有几个换行符 如果我使用sed来替换字符串,新字符串中的断线器会抱怨 所以现在我想打开文件,寻找那个令牌位置,然后从那里将新内容写入文件,但不确定如何实现。有人能帮忙吗 编辑: 看起来我可能可以将要插入的文件和内容作为数组,然后在perl中使用splice。但这可能不是最简单的方法 perl -i -pe's/token/foo\nbar\nbaz\n/g' file 您不能真正插入到文件中。就像插入字符串一样,必须

我需要用多行paragrah替换文件中的一个标记,如果段落表示为字符串,则其中有几个换行符

如果我使用sed来替换字符串,新字符串中的断线器会抱怨

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

编辑:

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

perl -i -pe's/token/foo\nbar\nbaz\n/g' file
您不能真正插入到文件中。就像插入字符串一样,必须首先将字符串的其余部分移开。对于文件,只需复制整个文件就更容易了

提供的代码打开
文件
,删除
文件
,创建
文件
,然后从打开的句柄复制(替换)到新句柄

我的理解是,
sed
也可以这样做。据我所知,
sed
也使用
-i
来启用此功能。

签出:


最简单的解决方案是使用perl,可以选择像ikegami演示的那样使用一行程序,也可以使用。

这很好,但是如何在脚本中运行它呢?我必须使用$^I吗?与您计划使用
sed
的方式相同。您也可以使用
$^I
,或者按照我给您的分步说明进行操作!谢谢。我找到了一种使用$^I的方法,它成功了。