0

このスクリプトをPerlで記述して、クエリ結果から変数$summary内の一意の文字列をチェックしようとしています。このような類似したエントリが複数ありますが、それらの一部は一意です(db1node1web1は異なるノードである可能性がありますが、結果のタイプは同じです)。これは、正規表現を正しく使用しているかどうかを確認するためのコードのほんの一部です(現在は正しくありません)。

以下のコードを含めました:

$summary = "NFW - CRITICAL CPU_Load_db1node1web1 CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012";
if ( $summary =~ "NFW - CRITICAL CPU_Load_[a-z]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012") {
    print "True\n";
}else {
    print "False\n";
}

私はPerlが非常に苦手で、クエリ結果を分析できるようにこれを機能させようとしています。

4

4 に答える 4

3

サブストリングのみを照合する必要がある場合は、それのみを指定します。例:

$summary =~ /NFW - CRITICAL CPU_Load_/
于 2012-09-12T18:11:22.893 に答える
2

私がperlでコーディングしてから数年が経ちましたが、IIRCでは、それが一致か置換かを指定する必要はありませんか?そして、あなたは数字を含める必要があります

私はあなたのコードが次のようになるべきだと信じています:

$summary = "NFW - CRITICAL CPU_Load_db1node1web1 CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012";
if ( $summary =~ m/NFW - CRITICAL CPU_Load_[a-z0-9]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012/) {
    print "True\n";
}else {
    print "False\n";
}

参照: http: //www.troubleshooters.com/codecorn/littperl/perlreg.htm

于 2012-09-12T18:12:27.417 に答える
0

[a-z]数字は含まれていません。サンプルの文字列にはいくつか1のが含まれています。クラスを次のように調整します

[a-z0-9]
于 2012-09-12T18:10:04.457 に答える
0

正規表現を引用するには、二重引用符ではなくスラッシュを使用する必要があります。また、入力db1node1web1には数字と文字が含まれます。

if ( $summary =~ /NFW - CRITICAL CPU_Load_[a-z0-9]* CRITICAL - load average: 114.49, 48.55, 29.17 Sept 01 00:10:16 PDT 2012/) {

  print "True\n";

}else {

  print "False\n";

}
于 2012-09-12T18:10:56.043 に答える