gpt4 book ai didi

regex - 如何用 Perl 中的另一组替换文件中的一组单词?

转载 作者:行者123 更新时间:2023-12-01 13:09:22 24 4
gpt4 key购买 nike

我的要求是用第二组单词替换给定文本文件中的一组单词,这可能是从命令行或另一个文件中给出的。想要使用 Perl 来执行此操作,因为我的其余代码也在 Perl 中。

所以,如果我有以下内容:

server name="${server1}" host="abc.com"
server name="${server2}" host="webcs.com"
server name="${server5}" host="httpvcs1.com"
server name="${server6}" host="xyz.com"
server name="${server7}" host="msg.com"

我想用一组不同的词替换字符串“server1”、“server2”、“server5”等。这些可以放在另一个文件中或从命令行给出(以更可行的为准)。

此外,如果我想用"file"替换“服务器”一词,而不仅仅是“server1”、“server2”等,我将如何为这个替换制作一个正则表达式?

perl -pie 's/server\d{1-3}/myword/g' loginOut.txt > loginOut1.txt

以上将用“myword”替换所有单词。但我只想替换子字符串。

最佳答案

第二个问题的正则表达式是 s/server/myword/g;。匹配(并替换)任何出现的“服务器”。

要用不同的字符串替换 server1、server2 等,您可以有一个包含替换规则的文本文件,例如:

server1 abcd
server2 bcde
server3 cdef
etc.

例如,您可以将文件中的日期读入哈希,

my %dict;
while(<DICTFILE>){
/(\S+)\s+(\S+)/;
$dict{$1}={$2};
}

然后进行替换:

while(my $line = <>){
foreach my $s (keys %dict){
$line =~ s/$s/$dict{$s}/g;
}
print $line;
}

关于regex - 如何用 Perl 中的另一组替换文件中的一组单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/351784/

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