簡體   English   中英

如何在Perl中將Zcat與regex一起使用?

[英]How to use zcat with regex in perl?

我已經壓縮了要使用的.gz文件:

./open.pl file.gz

基本上我的目標是只在zip文件中打印出與我的正則表達式匹配的某些行...文件很大,所以我現在只想輸出到stdout ...我該怎么做? 我在想這樣的東西:

while(<>){
  zcat $_ | <my regex> ????
}

另外,我不確定用於打印與正則表達式匹配的行的語法。

這是我做類似的事情

open( $handle, "zcat $ARGV[0]|" ) or die("Can't open $ARGV[0]: $!");
while( <$handle> ) {
if( /regex_pattern/ ) {
   print $_;
   }
}

我懷疑zcat是否可以在gzip壓縮流的換行符分隔的塊上正確運行。 相反,您將需要在讀取流時解壓縮流。 至少有兩種方法可以做到:

foreach my $argv (@ARGV) {
    open my $gz, "zcat $argv |";
    while (<$gz>) {
        # now $_ is an uncompressed line from the file $argv
        print if /my pattern/;
    }
}

也可能有一個使用:gz IO層的解決方案,但是我現在還不能完全正確。

暫無
暫無

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

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