0

ログを検索して、ログに記録されたIPアドレスを取得できるようにする必要があります。ログ行の例は次のようになります。

[2012-06-0511:59:52]通知[14369]chan_sip.c:''yy.yy.yy.yyy'の''からの登録に失敗しました-一致するピアが見つかりません

yy.yy.yy.yyyポジションに記載されているIPアドレスを取得する必要があります。他のログファイルでは、yy.yy.yy.yyyは別の位置になります。

私は各行を読み、分割して' 'から、分割された一時配列をループすることを考えていました'yy.yy.yy.yyy'。一重引用符を含めてパターンマッチングや正規表現を行う方法がわかりません'yy.yy.yy.yyy'。これどうやってするの?

4

2 に答える 2

1

この正規表現は、' に含まれる IP アドレスと一致します。

'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'

perl ですべての一致を繰り返すには、次のようにします。

while ($subject =~ m/'(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})'/g) {
    # matched text = $&
}

一致のグループ 1 には IP のみが含まれるため、「

于 2012-06-05T18:56:13.307 に答える
0
while (<>) {
    my ($ip) = $line =~ /for '((?:[0-9]+\.){3}[0-9]+)'/
       or next;

    ... do something with $ip ...
}
于 2012-06-05T18:50:15.440 に答える