Extraer columnas de un archivo txt usando un array
Publicado: 2017-12-18 21:27 @935
Hola, tengo unos datos en un archivo txt, los datos están separados por columnas (tab), algo así:
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í:
Gracias.
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
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
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.