Well, you're in luck. This is the kind of thing that Perl excels at. I don't know what separates the data in the columns, but assuming it's some sort of spacing (or tabs), you could use something like:
# Open the file containing data or abort with error message
open(my $fh, "<", "some_file.txt") || die "Can't open file: $!";
# Run through all lines of the file, one by one
while(my $line = <$fh>) {
# Break up the line on whitespace, assign columns to vars
my(
$score,$scorePoints,
$time,$timePoints,
$record,$recordPoints,
$size,$sizePoints,
$age,$agePoints,
$diff,$diffPoints,
$size2,$size2Points,
$name
) = split(/\s+/,$line,13);
# Check to see if name matches
if($name =~ /(intrepid|triumph)/) {
print
"$name\n",
"Time: $timePoints, Difficulty: $diffPoints\n\n";
}
}
That is, break up the line on spaces, assign each of the columns to variables, then print something if the data matches a test. Since your data is very regular, the code doesn't have to be complicated. You can make some modifications for simplicity:
# Assign only the columns you're interested in
my ($timePoints,$diffPoints,$name) = +(split(/\s+/,$line,13))[3,11,1
+4];
Or to eliminate possibly-bogus data:
# Ensure the line consists of 12 integers + something
my ( ... ) = ($line =~ /^\s*(?:(\d+)\s*){12}(.*)/);
Or for speed (don't bother splitting lines unless they
have intrepid/triumph on them somewhere):
next unless $line =~ /(intrepid|triumph)/;
my ( ... ) = ...;
print ....;
|