OT: a problem about text manipulation
Benjamin Franz
snowhare at nihongo.org
Tue Oct 31 11:05:03 UTC 2006
On Tue, 31 Oct 2006, Paul Smith wrote:
> Dear All
>
> I have a text file with more than 300000 of lines like the following:
>
> 1 E E E
> 2 C D 3 B E D
> 4 C E D
> 5 D E
>
> I am looking for an automatic way of transforming my text file into
> another one with the format
>
> 1 E
> 1 E
> 1 E
> 2 C
> 2 C
> 3 B
> 3 B
> 3 D
> 4 C
> 4 C
> 4 D
> 5 E
>
> Any ideas?
Your input data seems to not actually be equivalent to your output example
(at least not in any obvious way).
Assuming that what you *MEANT* for your output example was
1 E
1 E
1 E
2 C
2 D
3 B
3 E
3 D
4 C
4 E
4 D
5 D
5 E
the following Perl script should do it.
#!/usr/bin/perl
use strict;
use warnings;
while (<ARGV>) {
chomp;
my @elements = split(/\s+/);
my $running_col1;
foreach my $item (@elements) {
if ($item =~ m/^[0-9]+$/) {
$running_col1 = $item;
} else {
print "$running_col1 $item\n";
}
}
}
[me at mysystem] ./scriptname.pl data_file.txt
--
Benjamin Franz
"It is moronic to predict without first establishing an error rate
for a prediction and keeping track of one’s past record of accuracy."
-- Nassim Nicholas Taleb, Fooled By Randomness
More information about the fedora-list
mailing list