2010-12-20 8 views
0

ich eine Ausgabe der Linux-Kommandos habe „die“ , die folgenden Angaben enthalten .....Text csv Umwandlung

CURRENT USER/ACCT INFO 
17:31:36 up 4:49, 4 users, load average: 0.03, 0.04, 0.00 
USER TTY FROM [email protected] IDLE JCPU PCPU WHAT 
root :0 - 12:59 ?xdm? 4:54 0.02s /bin/sh /usr/bi 
root pts/0 :0 12:59 4:31m 0.00s 1:20 kded [kdeinit] 
root pts/1 :0.0 16:18 1.00s 0.00s 0.00s -bash 
root pts/2 :0.0 16:25 49.00s 0.02s 0.00s bash 

Dieser Ausgang I in eine Datei mit dem Namen gespeichert WHO.log

Jetzt, wie man diese Ausgabe in CSV-Format umwandelt, damit ich es in irgendeine Datenbank exportieren kann, , die irgendein Bashskript verwendet?

+0

Verwenden Sie weniger Interpunktion. –

+2

Das sieht mehr wie die Ausgabe von 'w' zu mir aus. –

Antwort

0

Völlig ungetestet, aber geben Sie ihm einen Versuch

who | awk '{ if (NR!=1 && NR!=2) {print} }' | sed -e 's/ /, /g' 
1

Versuchen Sie folgendes:

your_who_command | awk '{$1=$1; print}' OFS=, 
+0

Ich habe immer wonderer, ob die $ 1 = $ 1 Hack, um OFS tatsächlich verwendet werden, hat eine Umgehung. Es ist irgendwie hässlich, oder? – tokland

+0

danke für die Erklärung – tokland

0

Angenommen, der Befehl ‚wer‘ (Sind Sie sicher?), Dann müssen Sie die Leerzeichen getrennte Spalten 1-7 Ausgabe als Komma getrennte Felder 1-7, aber Sie müssen Spalten 8 und später als ein Ausgabefeld behandelt werden. Dies wird wahrscheinlich am besten mit dem Befehl shell read behandelt. Ich gehe davon aus, dass die ersten drei Zeilen verworfen werden sollten.

who | sed '1,3d' | 
while read user tty from login idle jcpu pcpu what 
do echo "$user,$tty,$from,$login,$idle,$jcpu,$pcpu,$what" 
done