2

文字「*」で始まる行を一致させようとしています。ファイル mac-address.txt は次のとおりです。

Legend: * - primary entry
    age - seconds since last seen
    n/a - not available

vlan   mac address     type    learn     age              ports
------+----------------+--------+-----+----------+--------------------------
*   14  782b.cb87.b085   dynamic  Yes          0   Gi4/39
*  400  c0ea.e459.913d   dynamic  Yes          0   Gi6/21
*  400  0017.c59a.23aa   dynamic  Yes          0   Gi3/37
*  400  d4be.d96a.050f   dynamic  Yes          0   Gi1/12

私はこのようなものを持っています。

#!/usr/bin/perl 
use strict;
use warnings;
my $line;
open FH, '<', "mac-address.txt";
while ($line = <FH>)
{
    if ($line =~ m/^\S/){
    print ("$line");
    }
}
close FH;

ただし、次のように、いくつかの不要な行と一緒に機能します。

Legend: * - primary entry
------+----------------+--------+-----+----------+--------------------------
*   14  782b.cb87.b085   dynamic  Yes          0   Gi4/39
*  400  c0ea.e459.913d   dynamic  Yes          0   Gi6/21
*  400  0017.c59a.23aa   dynamic  Yes          0   Gi3/37
*  400  d4be.d96a.050f   dynamic  Yes          0   Gi1/12

* を含む行のみを保持し、他の行を削​​除するような適切な方法を教えてください。何か問題がある場合はお知らせください。ありがとうございました。

4

1 に答える 1

6

ダーティダース*にあるため、エスケープする必要があります。

/^\*/
于 2013-11-12T02:18:22.430 に答える