cvs Datei durchsuchen - output an Anfang der Zeile schreiben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
mojorianer
Beiträge: 10
Registriert: 16.03.2011 16:57:13

cvs Datei durchsuchen - output an Anfang der Zeile schreiben

Beitrag von mojorianer » 15.09.2012 01:06:16

Hallo Leute,

ich möchte eine CVS-Datei zeilenweise durchsuchen und jeweils die fünfte Stelle (spaltenweise mit cut getrennt) an den Anfang jeder Zeile schreiben.

Ausgangsdatei:

Code: Alles auswählen

"c","b","d","a","mail1" 
"c","b","b","a","mail2" 
"c","b","b","a","mail3" 
"c","b","d","a","mail4" 
Ergebnis soll sein:

Code: Alles auswählen

"mail1"."c","b","d","a","mail1" 
"mail2","c","b","b","a","mail2" 
"mail3","c","b","b","a","mail3" 
"mail4","c","b","d","a","mail4" 
Folgendes habe ich schon probiert. Am Anfang jeder Zeile steht leider ausschließlich mail4

Code: Alles auswählen

while read datei1; do

mail=`echo $datei1 | cut -d "," -f5`
sed -e "s/^/$mail,/g" mail.csv > result.csv

done < mail.csv
Vielen Dank

rendegast
Beiträge: 15041
Registriert: 27.02.2006 16:50:33
Lizenz eigener Beiträge: MIT Lizenz

Re: cvs Datei durchsuchen - output an Anfang der Zeile schre

Beitrag von rendegast » 15.09.2012 05:18:22

sed -e "s/^/$mail,/g" mail.csv > result.csv
Einerseits bearbeitet sed hier nicht mehr die mit read eingelesene Eingabezeile, sondern jedesmal die Ausgangsdatei direkt,
andererseits überschreibt '>' bei jeder Zeilenbearbeitung die Zieldatei result.csv.
Das kannst Du sehen, wenn

Code: Alles auswählen

...
cat result.csv; echo
done < mail.csv
Korrekt wäre

Code: Alles auswählen

 > result.csv                         # vorheriges loeschen
while read ....
...
#sed -e "s/^/$mail,/g" mail.csv > result.csv
echo $datei1  |  sed -e "s/^/$mail,/g"  >> result.csv
...

Einfacher

Code: Alles auswählen

awk -F, '{print $5","$0}' mail.csv > result.csv
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")

Antworten