如何使用Perl替换文件中的特定IP?

时间:2010-11-17 14:03:08

标签: regex perl

我有一个IP列表,我必须将所有以210.x.x.x开头的lP转换为10.x.x.x

例如:

210.10.10.217.170 ----> 10.10.10.217.170

是否有任何内联Perl正则表达式替换来执行此操作?

我想在Perl中进行这种替换。

4 个答案:

答案 0 :(得分:3)

$ip =~ s/^210\./10./;

答案 1 :(得分:2)

为什么不使用sed呢?

sed -e 's/^210\./10./' yourfile.txt

如果你真的想要一个perl脚本:

while (<>) { $_ =~ s/^210\./10./; print }

答案 2 :(得分:1)

您可以使用perl -pe迭代文件的行并进行简单的替换:

perl -pe 's/^210\./10./' file

或者就地修改文件:

perl -pi -e 's/^210\./10./' file

请参阅perlruns///

答案 3 :(得分:1)

# Read the IP list file and store in an array
$ipfile = 'ipfile.txt';
open(ipfile) or die "Can't open the file";
@iplist = <ipfile>;
close(ipfile);

# Substitute 210.x IPs and store all IPs into a new array
foreach $_(@iplist)
{
  s/^210\./10\./g;
  push (@newip,$_);
}

# Print the new array
print @newip;