use*_*091 3 perl file-io parsing insertion
在文本文件中,我想使用perl在另一行文本的每个匹配之前插入一行新文本.
示例 - 我的文件是:
holiday
april
icecream: sunday
jujubee
carefree
icecream: sunday
Christmas
icecream: sunday
towel
...
Run Code Online (Sandbox Code Playgroud)
我想'icecream: saturday'在' icecream: sunday'行之前插入一行文本.所以之后,文本文件看起来像.是的,我需要结肠:在搜索和替换模式中都.
holiday
april
icecream: saturday
icecream: sunday
jujubee
carefree
icecream: saturday
icecream: sunday
Christmas
icecream: saturday
icecream: sunday
towel
...
Run Code Online (Sandbox Code Playgroud)
我想在Windows PC上使用perl 5.14来做这件事.我已经安装了Perl.我在这个网站上搜索并尝试了很多其他的例子,但它们并不适合我,不幸的是我不是Perl的完整专家.
如果有一个例子也使用sed我也有Cygwin sed.
这是一个命令行版本.
perl -i.bak -pe '$_ = qq[icecream: saturday\n$_] if $_ eq qq[icecream: sunday\n]' yourfile.txt
Run Code Online (Sandbox Code Playgroud)
命令行选项的说明:
-i.bak:对输入文件执行操作,创建扩展名为.bak的备份版本
-p:循环输入文件的每一行,将行放入$ _并在每次迭代后打印$ _
-e:对输入文件中的每一行执行此代码
Perl的命令行选项记录在perlrun中.
代码说明:
如果数据行($ _)是"icecream:sunday \n",那么在该行前面加上"icecream:saturday \n".
然后只需打印$ _(这是使用-p标志隐式完成的).