Doppelte while-Schleife soll Ausgabe *richtig* in Datei umleiten...

07/12/2015 - 17:25 von Michael Hagedorn | Report spam
Hallo.
Ich bin leider auf ein neues Problem gestoßen ...

Mittlerweile sieht die Datei
file.csv so aus:

ku261,schirm,titjul,
ku261,schirm,woeann,
ku261,schirm,wolann,
ku262,krepet,becjan,
ku262,krepet,drecor,
ku263,krepet,wuetim,
ku264,schirm,breaar,
ku264,schirm,gragee,
ku264,schirm,hoejan,
ku265,krepet,apkber,
ku265,krepet,aremar,
ku265,krepet,brimar1,


ku265,krepet,brumei,


ku265,krepet,kusmax,
ku265,krepet,lamger,
ku266,krepet,adaaxe,
ku266,krepet,drecor,
ku266,krepet,elstob,
ku266,krepet,hanmau,
ku266,krepet,heejan,
ku266,krepet,kameli,


Es tauchen also nur noch IDs auf, die alle eindeutig zuzuordnen sind.
Nun habe ich es mit Hilfe einer doppelten while-Schleife so hingekriegt,
dass die Zeilen so ausgelesen werden, wie ich sie brauche:

./read.sh file.csv

#!/bin/bash
#set -x
IDs=$1

while IFS="," read kursID lehrer;
do
echo "#K: $kursID L:$lehrer"
echo -n "<Befehl zum Anlegen eines Projektes> -p kurs_$kursID --admins
$lehrer --members "
while IFS="," read kurs lehrer schueler;
do
if [[ $kurs == "$kursID" ]]; then
echo -n "$schueler, "
fi
done < <(cat $IDs |tr [:upper:]ÄÖÜ [:lower:]àöü )
echo
echo --
done < <(cat $IDs | cut -d"," -f1,2 |uniq |tr [:upper:]ÄÖÜ [:lower:]àöü)


Wie man schnell sieht, ist es kein Problem, diese Befehl per Echo als
Bildschirmausgabe darstellen zu lassen. Leider klappt es aber nicht,
wenn ich die echo-Befehle z.B. in die Datei >> projekte.csv umleiten
lasse, da dort dann am Ende jeder Zeile jeweils das **letzte** <ENTER>
fehlt (-n sei Dank!)
Ich schàtze, dass es nur eine Kleinigkeit ist, die da fehlt ... sehe
aber gerade den Wald vor lauter Bàumen nicht. Wer findet den "Fehler"?

Wenn es auch mit nur einer Schleife ginge, wàre ich übrigens auch nicht
böse :)
Danke für *den* Tipp.
 

Lesen sie die antworten

#1 Norbert Möndjen
07/12/2015 - 18:30 | Warnen spam
Michael Hagedorn wrote:

wenn ich die echo-Befehle z.B. in die Datei >> projekte.csv umleiten
lasse, da dort dann am Ende jeder Zeile jeweils das **letzte** <ENTER>
fehlt (-n sei Dank!)



Es fehlt dir nur ein finales echo am Ende der Zeile das eben nur ein Newline
ausgibt. echo -en "" z.B

Gruss
Nobbe

Ähnliche fragen