Hola, tengo unos datos en un archivo txt, los datos están separados por columnas (tab), algo así:
Using text Syntax Highlighting
#Var columnA columnB columnC columnD …..columnZ
x1 1 3 7 0.9 …1
x2 5 3 13 7 …2
x3 0.1 0.8 7 1 …3
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
y estoy tratando de hacer un script para extraer una o varias columnas, según se requiera (las columnas de extracción nunca son las mismas, es decir no puedo usar un número fijo para extraerlas), solo que no he podido hacer que extraiga las columnas que deseo.
Asumiendo que quiero extraer las columnas A y C, al final quedaría algo así:
Using text Syntax Highlighting
#Var columnA columnC
x1 1 7
x2 5 13
x3 0.1 7
Coloreado en 0.000 segundos, usando
GeSHi 1.0.8.4
Using perl Syntax Highlighting
#!/usr/bin/perl
use strict;
use warnings;
my @wanted_fields = qw/columnA columnC/;
open DATA, '<', "columns.txt" or die "cant open file\n";
my @datain = <DATA>;
close DATA;
my ( @unit_name, $names, @lines, @conteo, @column_match, @names_match );
foreach (@datain) {
if ( $_ =~ m/^$/g ) { next; }
elsif ( $_ =~ m/#Genera/g ) { $names = $_; }
else { push @lines, $_ }
}
@unit_name = split( /\t/, $names );
shift @unit_name;
my $count = 0;
foreach (@wanted_fields) {
my $unit_wanted = $_;
chomp $unit_wanted;
foreach (@unit_name) {
if ( $_ =~ m/$unit_wanted/g ) {
$count++;
push( @conteo, $count );
}
}
}
foreach (@lines) {
chomp;
my @columnas = split( /\t/, $_ ); # ¡¡¡ aquí es donde quería usar un loop con @conteo y extraer cada columna !!!
print "$columnas[0]\n";
}
Coloreado en 0.003 segundos, usando
GeSHi 1.0.8.4
Gracias.