gpt4 book ai didi

regex - perl 就地搜索和替换,但仅在匹配第二个模式的行上

转载 作者:行者123 更新时间:2023-12-05 08:33:59 24 4
gpt4 key购买 nike

今天我学习了如何使用 perl 对一个或多个文件进行搜索和替换。例如,我可以这样做:

perl -i -p -e "s/Sydney/Moscow/g" cities.txt

...完成后,cities.txt 将被就地修改,这样字符串“Sydney”的所有实例都已被“Moscow”替换。

这很好,但我想要更多控制:具体来说,我希望搜索和替换操作发生在以字符串“HomeCities:”开头的行上"

例如,如果 cities.txt 在我运行命令之前看起来像这样:

HomeCities:   Dublin, Sydney, Los Angeles, Chicago
AwayCities: New York, Melbourne, Sydney, Oakland

...然后在命令完成后,它看起来像这样:

HomeCities:   Dublin, Moscow, Los Angeles, Chicago
AwayCities: New York, Melbourne, Sydney, Oakland

除了使用显式的每行 for 循环和每行逻辑编写脚本或程序之外,有没有办法做到这一点?

最佳答案

你已经差不多了:

perl -i -p -e "s/Sydney/Moscow/g if /^HomeCities:/" cities.txt

编辑添加:

顺便说一句,如果文件可能包含一个名称包含“Sydney”作为子字符串的城市,例如。 “Sydneyville”之类的,并且您不想将其更改为“Moscowville”,您可以收紧正则表达式以仅适用于完整的单词:

perl -i -p -e "s/\bSydney\b/Moscow/g if /^HomeCities:/" cities.txt

关于regex - perl 就地搜索和替换,但仅在匹配第二个模式的行上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425448/

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