[英]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.