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 回答