gpt4 book ai didi

perl - 如何在 Perl 中搜索多个文件中的字符串?

转载 作者:行者123 更新时间:2023-12-02 03:05:34 26 4
gpt4 key购买 nike

我的问题可能很简单,但我是一个完全的新手。我想在多个文本文件的内容中搜索特定短语,然后在屏幕上显示找到的行。我已经学会了如何处理单个文件。例如,如果我想搜索一个单词,请在 F 根目录下名为“wyvern.txt”的文本文件中说“好的”。以下代码有效:

#!/usr/bin/perl

$file = 'F:\wyvern.txt';
open(txt, $file);
while($line = <txt>) {
print "$line" if $line =~ /Okay/;
}
close(txt);

但是如果我想在两个文本文件中搜索相同的短语,分别是“wyvern”和“casanova”,该怎么办?或者F根目录“novels”目录中的所有文件怎么办? .

任何帮助将不胜感激。提前致谢

迈克

编辑:

哈哈,我终于知道如何在目录中的所有文件中搜索模式匹配了:)以下代码效果很好:

#!/usr/bin/perl  
@files = <F:/novels/*>;
foreach $file (@files) {
open (FILE, "$file");
while($line= <FILE> ){
print "$line" if $line =~ /Okay/;
}
close FILE;
}

最佳答案

扩展 Jonathan Leffler 提供的好答案:

找到匹配的文件名位于$ARGV中,稍加改动,行号就可以在$.中找到。示例:

while (<>) {
print "$ARGV:$.:$_" if /pattern/;
} continue {
close ARGV if eof; # Reset $. at the end of each file.
}

此外,如果您有文件名列表并且它们不在命令行上,您仍然可以获得神奇的 ARGV 行为。观看:

{
local @ARGV = ('one.txt', 'two.txt');
while (<>) {
print "$ARGV:$.:$_" if /Okay/;
} continue {
close ARGV if eof;
}
}

这是对一系列文件进行逐行处理的普遍有用的模式,无论它是什么 - 即使我可能推荐 File::GrepApp: :Ack 这个具体问题:)

关于perl - 如何在 Perl 中搜索多个文件中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1512729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com