Dynamische Spalten mit awk

11/11/2014 - 12:04 von Celal Dikici | Report spam
Hallo Gruppe,

irgendein SQL Liefert (via Shell-exec) ganze Menge Daten (CSV) und es gibt mehrere Abnehmer; nicht jeder will jedoch alle Spalten davon. Der eine will Spalten 1,2,3 der andere 1,4,5; und ein anderer Abnehmer wiederum andere Spalten.

Ich könnte natürlich jetzt im Shell-Script im Post-Processing für jeden Abnehmer ein Abschitt definieren, wo ich für jeden Abnehmer seine awk-Spalten angebe.

Nachteil: mit jedem neuen Abnehmer wàchst diese Abschnitt!

Besser wàre es, wenn ich irgendwo die Abnehmer und die dazugehörigen Spaltennummer definieren würde; nacher könnte ich einfach in einer Schleife diese Definitionen durchgehen und die Ausgabedatei für jeden Abnehmer spezifisch duplizieren.

Ich meine: in einer Shellvariable, nennen wir sie AwkRows, stehen komma-oder-was-auch-immer-getrennt, die Spaltennummern

AwkRows='$1,$3,$2' (oder einfach nur die Spalten: "1,3,2" )

und dann wàre es schön, wenn ich sinngemàß so etwas machen könnte

cat ${OutFile} | awk -F";" '{print $AwkRows}' > ${OutFile}.modif

Hat jemand eine Lichtstrahl für mich?

Vielen Dank im Voraus,
Celal
 

Lesen sie die antworten

#1 Lars Behrens
11/11/2014 - 13:06 | Warnen spam
Am 11.11.2014 um 12:04 schrieb Celal Dikici:

cat ${OutFile} | awk -F";" '{print $AwkRows}' > ${OutFile}.modif

Hat jemand eine Lichtstrahl für mich?



Muss es awk sein? Geht doch auch mit cut.

Rows='1,3'
cat $Outfile | cut -d ',' -f $Rows >$OutFile.modif

Cheerz,
Lars

Ähnliche fragen