【发布时间】:2018-05-08 09:13:53
【问题描述】:
我一直在使用以下 Perl 代码从多个文本文件中提取文本。它工作正常。
其中一个输入文件中的几行示例:
Fa0/19 CUTExyz notconnect 129 half 100 10/100BaseTX
Fa0/22 xyz MLS notconnect 1293 half 10 10/100BaseTX
我需要的是精确匹配每一行中的数字(即129 与1293 不匹配)并打印相应的行。
匹配一系列数字也会很好,将特定数字排除在外,即匹配 2 到 10,但不匹配 11 到 12 到 20
#!/perl/bin/perl
use warnings;
my @files = <c:/perl64/files/*>;
foreach $file ( @files ) {
open( FILE, "$file" );
while ( $line = <FILE> ) {
print "$file $line" if $line =~ /123/n;
}
close FILE;
}
谢谢你的建议,但是可以使用上面的代码结构吗?
【问题讨论】:
-
/n是什么意思? -
这似乎是 5.22 中的新事物,可以防止组捕获。但鉴于 OP 没有组,我认为这是一个错字。
-
能否请edit 提供一些应该和不应该匹配的行示例?
-
到目前为止,格式化代码最简单的方法是使用
perltidy -pbp。无论如何,这是一个值得使用的工具,但如果您想在某处发布代码,则更是如此:) -
仅当它是“整行完全匹配”而不是“匹配行上的数字”时。
标签: perl