Supportnet / Forum / Linux
Frage zur Shell Programmierung
Frage
hallo zusammen,
ich mache gerade meine ersten schritte mit der shell programmierung, und habe gleich ein problem, bei dem ich nicht weiter weis.
ich habe eine .csv datei, die mehrere zeilen beinhaltet, nun möchte ich die dritte stelle der zeilen auslesen und diesen wert (eine zahl 0-9) an eine variable übergeben, damit ich mit diesem wert/variable dann weiter arbeiten kann.
geht das und wenn ja wie?
für eure hilfe bedanke ich schon jetzt und bin gespannt auf die lösung
mfg
sönke
Antwort 1 von draack
Hi,
Zerlegen kannst du mit:
oder
Das Komma solltest du natürlich durch das richtige Trennzeichen ersetzen.
Tschö,
Volker
Zerlegen kannst du mit:
cut -f 3 -d, datei.csv
oder
awk -F, ´{ print $3 }´ datei.csv
Das Komma solltest du natürlich durch das richtige Trennzeichen ersetzen.
Tschö,
Volker
Antwort 2 von meckerbüttel
Frage zur Shell Programmierung
ja ok, das klappt schon mal, aber wie stelle ich es jetzt an, dass der entsprechende wert an die variable übergeben wird?
habe es mit eine anschliessenden umleitung der ausgabe probiert, aber das klappt anscheinend nur wenn ich das direkt in eine andere datei schreibe.
awk -F, ´{ print $3 }´ test.csv > sls
echo $sls
leider wird hier $sls nicht ausgegeben, bzw. es wird eine leere zeile am bildschirm angezeigt, von daher gehe ich mal aus, das sls nicht gefüllt wird.
ja ok, das klappt schon mal, aber wie stelle ich es jetzt an, dass der entsprechende wert an die variable übergeben wird?
habe es mit eine anschliessenden umleitung der ausgabe probiert, aber das klappt anscheinend nur wenn ich das direkt in eine andere datei schreibe.
awk -F, ´{ print $3 }´ test.csv > sls
echo $sls
leider wird hier $sls nicht ausgegeben, bzw. es wird eine leere zeile am bildschirm angezeigt, von daher gehe ich mal aus, das sls nicht gefüllt wird.
Antwort 3 von draack
Hi,
du übersiehst, dass du mehrere Werte zurückerhälst - du mußt mit einer "for"-Schleife arbeiten:
(die ` sind "backticks" - keine Hochkommas)
Tschö,
Volker
du übersiehst, dass du mehrere Werte zurückerhälst - du mußt mit einer "for"-Schleife arbeiten:
for i in `awk -F, ´{ print $3 }´ test.csv`
do
echo "Wert der dritten Spalte ist: " ${i}
done
(die ` sind "backticks" - keine Hochkommas)
Tschö,
Volker
Antwort 4 von meckerbüttel
super, das funktioniert, damit komme ich ein großes stück weiter.
vielen dank für die schnelle hilfe
mfg
sönke
vielen dank für die schnelle hilfe
mfg
sönke