【发布时间】:2011-10-18 09:04:42
【问题描述】:
我想从文件中提取与特定模式匹配的行,并且我想为超过 500 个文件执行此操作。它还应该能够保留文件的唯一名称。
我使用了 awk,但我必须单独处理每个文件。
c:\>gawk "/S1901/" Census_Tract_*.csv > Census_Tract_*.csv
在此处链接 (http://bit.ly/nMX8qh) 中显示的示例中,我只想保留那些包含 S1901 的记录。为外部链接道歉,但我无法保留表格的格式。
我找到了一些我用来编写它的 perl 代码,但它保留了所有行,并且不只选择模式匹配的那些行/记录。任何提示将不胜感激。 perl 代码如下:
#perl -w
$pattern = "Subject_Census*.csv"; # process only those files that match pattern
while (defined ($in = glob($pattern))) {
($out = $in) =~ s/\.csv$/.outcsv/; # read from "xyz.in" and write to "xyz.out"
open (IN, "<", $in) or die "Can't open $in for reading: $!";
open (OUT,">>", $out) or die "Can't open $out for writing: $!";
while (<IN>) {
$mystring =~ /S1901/;
print OUT $_ if $mystring == 0;
}
close (IN) or die "Can't close $in: $!"; # good idea to do some housekeeping
close (OUT) or die "Can't close $out: $!";
}
【问题讨论】: