-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfindValInField.pl
More file actions
executable file
·49 lines (35 loc) · 963 Bytes
/
findValInField.pl
File metadata and controls
executable file
·49 lines (35 loc) · 963 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/perl -w
use Flat;
use math;
use Getopt::Std;
my(%options);
getopts("f:", \%options);
if(scalar(@ARGV) != 3) {
print "Usage: ~ [-f <fld1|...|fldN>] <input.csv> <ID_fld> <re_of_val>\n";
print "e.g. ~ /tmp/t.csv name2 '=~ /^CREM\$/'\n";
exit(1);
}
my($in) = Flat->new1($ARGV[0]);
my($idFld) = $in->getFieldIndex($ARGV[1]);
my $idName = $in->getFieldName($idFld);
my(@fldNames);
if(exists $options{"f"}) {
my @flds = split(/\|/, $options{"f"});
@fldNames = $in->getFieldNames(@flds);
}
else {
@fldNames = $in->getFieldNames();
}
my @fldIndice = $in->getFieldIndice([@fldNames]);
my($val) = $ARGV[2];
if($val !~ /\/.+?\//) {
$val = "=~ /$val/";
}
my(@data) = $in->getDataArray();
print join("\t", $idName, @fldNames), "\n";
for(my($i) = 0; $i < scalar(@data); $i++) {
my($m) = "'$data[$i][$idFld]' $val";
if(eval($m)) {
print join("\t", $data[$i][$idFld], map { $data[$i][$_]; } @fldIndice), "\n";
}
}