CSV Datei in Array einlesen

pod32

pod32

Mitglied
Hallo,

ich habe eine CSV Datei folgender Gestalt:

Code:
21022009 root du-h
22022009 user1 ls

(zugegeben: ein bisschen länger und mehr Spalten.)

Das Trennzeichen ist der Tabulator \t

Mein fehlerhaftes Skript schaut im mom so aus...
Code:
#!/bin/bash
function file2arr(){
        local count=0
        while read LINE; do
                arr_$count=($LINE)
                ((count++))
        done < $1
        #echo ${arr_0[0]}
        #echo ${arr_0[0]}
        #echo ${arr_1[1]}
}
...
file2arr $1
...

Was ich eigentlich möchte ist ein 2D-Array :devil: was es leider nicht gibt.
Also habe ich es mir so gedacht, dass ich in den eckigen Klammern die Zeile speichere und den Variablennamen als Spalte missbrauche.

Nun steck ich fest und probier schon ewig rum... :hilfe2:
hier wird das analysieren eines Strings wo \t vorkommen beschrieben könnte man das für jede Zeile anwenden...?

Danke!!!
 
Zuletzt bearbeitet:
Waere es nicht sinnvoller, Programme wie awk, cut oder sogar perl fuer die bevorstehende Aufgabe zu nutzen?
 
Waere es nicht sinnvoller, Programme wie awk, cut oder sogar perl fuer die bevorstehende Aufgabe zu nutzen?

hmm jo - Perl einzusetzen habe ich mir auch schon überlegt.
Dann Arbeite ich mich da mal ein (hab da bisher noch quasi nix gemacht).

Sollte doch jmd. eine Antwort haben - für Suchende, denen es ähnlich geht sicher hilfreich!
 
Hi!

in Perl ...

open(READ,"datei.csv") or die $!;
while my $line (<READ>){
if($line=~/\d+\t/){
my @liste = split("\t",$line);
print $liste[0];
# ... oder als Hash/Array speichern
}
}
close READ;

sollte funktionieren ;-)

Grüße,
MathiKo
 
Zuletzt bearbeitet:
@mathiko: hmmm... leider nein:

Code:
syntax error at csv_reader.pl line 8, near "$line ("
Global symbol "$line" requires explicit package name at csv_reader.pl line 9.
syntax error at csv_reader.pl line 12, near "}"
Execution of csv_reader.pl aborted due to compilation errors.
[/CODE

und hier der quasi gleiche code :brav:

[CODE]
     1  #!/usr/bin/perl
     2  # file: csv_reader.pl
     3  use strict;
     4  use IO::File;
     5  
     6  open(READ,"datei.csv") or die $!;
     7  
     8  while my $line (<READ>){
     9  	if($line=~/\d+\t/){
    10  		my @liste = split("\t",$line);
    11  		print $liste[0];
    12  	}
    13  }
    14  close READ;

gruß
pod32
 
Zuletzt bearbeitet:

Ähnliche Themen

in_array Problem

Datei in shellscript Zeilenweise einlesen

Variable oder Array nach Schleifendurchlauf

Zurück
Oben