gpt4 book ai didi

perl - 在匹配文本之前插入新的文本行

转载 作者:行者123 更新时间:2023-12-05 01:14:28 29 4
gpt4 key购买 nike

在文本文件中,我想使用 perl 在另一行文本的每个匹配项之前插入一行新文本。

示例 - 我的文件是:

holiday
april
icecream: sunday
jujubee
carefree
icecream: sunday
Christmas
icecream: sunday
towel

...

我想插入一行文字 'icecream: saturday'在' icecream: sunday' 之前线。所以之后,文本文件看起来像。是的,我确实需要冒号 :在搜索和替换模式中。
holiday
april
icecream: saturday
icecream: sunday
jujubee
carefree
icecream: saturday
icecream: sunday
Christmas
icecream: saturday
icecream: sunday
towel
...

我想在 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

命令行选项说明:

-i.bak : 对输入文件进行操作,创建扩展名为 .bak 的备份版本

-p : 循环遍历输入文件的每一行,将该行放入 $_ 并在每次迭代后打印 $_

-e : 对输入文件中的每一行执行这段代码

Perl 的命令行选项记录在 perlrun 中。 .

代码说明:

如果数据行(在 $_ 中)是“icecream: sunday\n”,则在该行前面加上“icecream:saturday\n”。

然后只打印 $_ (这是用 -p 标志隐式完成的)。

关于perl - 在匹配文本之前插入新的文本行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13632013/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com