Import set di file di text in un insieme di colonne

Ho un insieme di file di text denominati outfile00.txt fino a outfile297.txt . Ogni file ha un numero (decimale o altro) su each row tranne la prima (che è come un'intestazione).

Devo importre il contenuto di ciascun file in una colonna a partire dalla colonna A (che corrisponderà a outfile00.txt ) fino a quando tutti i file di text sono stati importti.

Ecco un esempio dell'inizio di outfile00.txt :

 KP=0.50 ,Ki=0.10 ,Kd=0.05 0.00 0.00 0.00 0.00 

Il file effettivo ha circa 1500 righe. Ho provato a importre manualmente il file di text utilizzando la scheda Dati; Excel non ha problemi e il text viene importto.

Come posso importre tutti i file di text come un batch?

EDIT

Credo di non aver definito chiaramente il mio problema, ecco alcuni dettagli aggiuntivi.

Per quanto riguarda il metodo di cybernard ,

Se creo un file di valori separati da tabulazione (il carattere della scheda è tra la lettera e il numero di ciascuna row) come segue,

 a 1 b 2 c 3 e 4 f 5 g 6 

Posso importre direttamente il file di text e get i seguenti,

File di valori importati separati da tabulazione

Speravo di creare un file simile al file TSV di cui sopra. Un esempio sarebbe come segue,

 KP=0.50 ,Ki=0.10 ,Kd=0.05 KP=0.50 ,Ki=0.10 ,Kd=0.10 KP=0.50 ,Ki=0.10 ,Kd=0.15 0.00 117.00 123.00 0.00 118.00 124.00 0.00 119.00 125.00 0.00 120.00 126.00 

che produce i seguenti risultati di importzione,

Risultati importati dal file TSV generato

Devo sapere come posso generare un tale file TSV dai miei file di origine.

È ansible utilizzare Power Query per combinare tutti i file in una cartella. Power Query è un componente aggiuntivo gratuito di Microsoft per Excel 2010 e 2013 ed è incorporato in Excel 2016 come Get and Transform.

Ken Puls ha un tutorial dettagliato qui .

Una volta impostata la query, i file possono essere aggiunti o rimossi dalla cartella e la query può essere aggiornata con il clic di un button.

Il primo 00 deve essere rinominato 0. Potrebbe essere necessario rimuovere altri 0 offset. Ad esempio 01,02,03 non funziona, rinominare a 1,2,3.

dal prompt dei comandi andare nella cartella contenente tutti i file.

FOR / L% i IN (0,1,297) digitare outfile% i.txt >> master.txt

Questo dovrebbe combinare tutti i file in master.txt.

Quindi si desidera una chiave tab tra i file. Nel block note, creare un file che contiene una singola scheda denominata tab.txt dopo averli salvati assicurarsi che sia di 1 byte di size e che hai accidentalmente colpito altri caratteri.

FOR / L% i IN (0,1,297) digitare outfile% i.txt tab.txt >> master.txt

D: Devo sapere come posso generare un tale file TSV dai miei file di origine.

Lo sapevi che c'è un command solo per questo?

 paste outfile*.txt > out.txt 

Se vuoi scrivere il tuo algorithm, scegli il linguaggio (scripting) di tua scelta.

  1. awk : awk -f awk.awk outfile*.txt > out.txt

     BEGIN {count = 1} FNR == 1 && FNR < NR {count++} { if ( _[FNR] ) { while ( c[FNR] != count-1 ) { _[FNR] = (_[FNR] " " sprintf("%8s","")) c[FNR]++ } _[FNR] = (_[FNR] "\t" sprintf("%-8s",$0)) c[FNR]++ } else if ( count == 1 ) { _[FNR] = sprintf("%-8s",$0) c[FNR]++ } else { while ( c[FNR] != count-1 ) { if ( _[FNR] ) _[FNR] = (_[FNR] " " sprintf("%8s","")) else _[FNR] = sprintf("%8s","") c[FNR]++ } _[FNR] = (_[FNR] "\t" sprintf("%-8s",$0)) c[FNR]++ } } END { for (i=1; i<=length(_); i++) print _[i] } 
  2. perl : perl perl.pl > out.txt

     use strict; use warnings; my $i; my @rows; my @files = map { "outfile$_.txt" } 0 .. 297; foreach my $file (@files) { open my $infh, '<', $file or die $!; $i=0; while (<$infh>) { chomp; my $data = $_; if (length $rows[$i]) { $rows[$i++] .= "\t" . $data; } else { $rows[$i++] = $data; } } } foreach my $row (@rows) { print "$row\n"; } 

PS Nel caso in cui ti stai chiedendo, bash, awk e perl sono disponibili su più piattaforms, tra cui Windows ( Cygwin è la mia raccomandazione).

Aggiornamento: Ecco i file di input che ho usato, insieme all'output di paste outfile*.txt > out.txt su Git per Windows .

 ==> outfile00.txt <== KP=0.50 ,Ki=0.10 ,Kd=0.05 0.00 0.00 0.00 0.00 ==> outfile01.txt <== KP=1.50 ,Ki=1.10 ,Kd=1.05 1.00 1.00 1.00 1.00 ==> out.txt <== KP=0.50 ,Ki=0.10 ,Kd=0.05 KP=1.50 ,Ki=1.10 ,Kd=1.05 0.00 1.00 0.00 1.00 0.00 1.00 0.00 1.00