簡體   English   中英

使用perl在文本文件中使用grep單詞

[英]grep word in text files using perl

我的文件夾中有一個文本文件A00010.txt A00011.txt A00012.txt到A00099.txt,其中包含不同的條目,例如,

umxwtdn8vtnt_n
umxwtdtnt_nn8v
umxwt_ntdn8vtn
u8vtnt_nmxwtdn
utnt_nmxwtdn8v

我的Perl代碼是

#!/usr/bin/perl
use strict;

        my $count = 10; 
        for ($count = 10; $count<= 99; $count++) { 
            my $result = `/bin/cat /myfolder/A000$count.txt  | grep "umxwtdn8vtnt_n"`;
            return $result;
        }

     print $result;

我試圖獲得$ result值,但顯示為空

/myfolder確實在根目錄中嗎? (在ls /看到了什么?在myfolder看到了嗎?)在Unix系統的根目錄中添加內容非常罕見,而且我不認為您會弄亂/

另外,您將在子例程( sub { } )之外返回$result ,如果是這種情況,應該會遇到Perl運行時錯誤。

如果要復制代碼片段,請注意$result是局部變量,在子例程結束后它會消失。

您真的需要使用Perl嗎?

如果不:

find /myfolder -name "A000??.txt" | xargs grep -n "umxwtdn8vtnt_n"

會在文件中找到模式並告訴您在哪一行...

您想知道該模式是否在您的一個或多個文件中? 然后:

 my $not_found = 1;
 for (my $count = 10; $count<= 99; $count++) { 
    my $result = `grep "umxwtdn8vtnt_n" /myfolder/A000$count.txt`;
    if ($result) {
        print $result;
        $not_found = 0; # error level 0 = no error = found
        last;
    }
 }
 exit $not_found; # error level 1 = error = not found

仍在嘗試了解您的需求...

my $result;
for (my $count = 10; $count<= 99; $count++) { 
   # you should test that A000$count.txt actually exists here
   my $match = `grep "umxwtdn8vtnt_n" /myfolder/A000$count.txt`;
   if ($match == "umxwtdn8vtnt_n") {
        print "found $match in A000${count}.txt";
        $result = $match;
        last; # exit for loop
    }
}
if ($result) {
    # do something with it?
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM