在文件中找到一个字符串,如果匹配,则在文件中找到另一个匹配的字符串

时间:2020-06-18 10:03:24

标签: shell perl search

我有一个包含数据的文件,如下所示:


读取文件1
错误1
错误2
错误3
读取文件2
错误1
错误3
错误6
读取文件3
错误2
错误3
错误6


我想搜索Error2,如果找到它,请搜索它的文件名,分别为file1和file3。

我知道如何分别搜索匹配项,但是想知道一旦找到另一个匹配项就向后搜索。

1 个答案:

答案 0 :(得分:2)

我认为这是获取输出的漫长方法,但可以肯定。

my $file_nm = "";
while( my $line = <DATA> )
{
    chomp($line);
    if($line=~m/Reading\s+(.+)/)
    {
        $file_nm = $1;
    }
    if($line=~m/Error2/)
    {
        print "$line - found in $file_nm\n";
    }
}

__DATA__
Reading file1
Error1
Error2
Error3
Reading file2
Error1
Error3
Error6
Reading file3
Error2
Error3
Error6

输出:

Error2 - found in file1
Error2 - found in file3