我已經使用壓縮的.gz,我想打開文件:如何在perl中使用zcat和正則表達式?
./open.pl file.gz
基本上我的目標是隻打印出符合我的正則表達式的zip文件的某些行......這些文件都大,所以我只是想輸出到標準輸出現在...我怎麼做到這一點?我在想somethig像:
while(<>){
zcat $_ | <my regex> ????
}
而且我不知道有關語法打印線條勾勒出相匹配的正則表達式..
我已經使用壓縮的.gz,我想打開文件:如何在perl中使用zcat和正則表達式?
./open.pl file.gz
基本上我的目標是隻打印出符合我的正則表達式的zip文件的某些行......這些文件都大,所以我只是想輸出到標準輸出現在...我怎麼做到這一點?我在想somethig像:
while(<>){
zcat $_ | <my regex> ????
}
而且我不知道有關語法打印線條勾勒出相匹配的正則表達式..
我懷疑zcat
將在一個壓縮流的換行分隔塊正常運行。相反,您會在閱讀時解壓縮流。至少有幾個方法可以做到這一點:
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層,過一個解決方案,但我不能完全得到的是正確的現在。
下面是我做過類似
open($handle, "zcat $ARGV[0]|") or die("Can't open $ARGV[0]: $!");
while(<$handle>) {
if(/regex_pattern/) {
print $_;
}
}
工具的建議是好得多,如果你不需要額外的處理你的perl腳本... zgrep string_to_match file.gz – 2012-03-22 19:53:03
您可以用'zgrep'? – toolic 2012-03-22 19:43:06