You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Perl脚本查找并替换字符串或文件中的IP地址

Perl脚本实现IP地址的查找与替换

基于你已有的Regexp::Common::net模块使用基础,下面直接给出实现两个需求的方案:

一、处理字符串中的IP替换

直接使用Perl的正则替换操作符s///,结合$RE{net}{IPv4}匹配合法IPv4地址,全局替换为指定内容:

#!/usr/bin/perl
use strict;
use warnings;
use Regexp::Common qw/net/;

# 待处理的字符串
my $Event_text = "This is a test string with IPs 10.10.10.20 and 192.168.1.1, plus invalid 999.999.999.999";

# 全局替换所有合法IP为X.X.X.X
$Event_text =~ s/$RE{net}{IPv4}/X.X.X.X/g;

# 输出替换后的结果
print $Event_text, "\n";

运行后输出:

This is a test string with IPs X.X.X.X and X.X.X.X, plus invalid 999.999.999.999

二、处理文件中的IP替换

处理文件时,推荐先读取文件内容,替换后写入新文件(或覆盖原文件,注意备份),以下是两种常见方式:

方式1:一次性读取文件内容替换

适合小文件,操作简单:

#!/usr/bin/perl
use strict;
use warnings;
use Regexp::Common qw/net/;

# 输入文件路径
my $input_file = "test.txt";
# 输出文件路径(可设为同路径实现覆盖,建议先备份原文件)
my $output_file = "test_modified.txt";

# 读取文件内容
open(my $in_fh, '<', $input_file) or die "无法打开输入文件: $!";
my $content = do { local $/; <$in_fh> };
close($in_fh);

# 替换所有合法IP
$content =~ s/$RE{net}{IPv4}/X.X.X.X/g;

# 写入替换后的内容
open(my $out_fh, '>', $output_file) or die "无法打开输出文件: $!";
print $out_fh $content;
close($out_fh);

print "替换完成,结果已写入$output_file\n";

方式2:逐行处理文件

适合大文件,减少内存占用:

#!/usr/bin/perl
use strict;
use warnings;
use Regexp::Common qw/net/;

my $input_file = "test.txt";
my $output_file = "test_modified.txt";

open(my $in_fh, '<', $input_file) or die "无法打开输入文件: $!";
open(my $out_fh, '>', $output_file) or die "无法打开输出文件: $!";

# 逐行读取并替换
while (my $line = <$in_fh>) {
    $line =~ s/$RE{net}{IPv4}/X.X.X.X/g;
    print $out_fh $line;
}

close($in_fh);
close($out_fh);

print "替换完成,结果已写入$output_file\n";

关键说明

  • s/$RE{net}{IPv4}/X.X.X.X/g中的g修饰符表示全局替换,如果不加只会替换每行第一个匹配的IP。
  • Regexp::Common::net会自动匹配合法的IPv4地址,忽略如999.999.999.999这类无效IP,符合你的需求。
  • 处理文件时,若需要直接覆盖原文件,可将$output_file设为和$input_file相同,但建议先手动备份原文件避免数据丢失。

内容的提问来源于stack exchange,提问作者dms666

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 14:17:21