Ich habe meine vmstat
Ausgabe auf einer Linux-Box als solche:
# cat vmstat.out
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2675664 653028 3489156 0 0 1 19 22 7 5 1 94 0 0
Ich beabsichtige, den Wert unter jedem Feld in einem kommagetrennten Format zusammen mit Zeitstempel zu halten (natürlich, um es als CSV-Datei zu verwenden, um später in unser sehr liebevolles MS Excel übertragen zu werden). Also im Grunde ist es das, was ich will:
Erwartete Ausgabe:
2016,05,19,23,53,58,1,0,0,2675664,653028,3489156,0,0,1,19,22,7,5,1,94,0,0
Script:
cat vmstat.out | awk 'BEGIN{"date +'%Y,%m,%d,%H,%M,%S'"| getline dt;}{if (NR> 2) {i=1;while (i < NF) {rec=rec","$i; i++;} print dt,rec;}}'
Ausgabe, die ich von meinem Skript erhalten:
2016,05,19,23,53,58 ,1,0,0,2675664,653028,3489156,0,0,1,19,22,7,5,1,94,0
Beachten Sie die zusätzlichen Platz : 58 ,1
und die letzte 0
fehlt bei der erwarteten Ausgabe. Ich weiß, dass der Teil in meinem Skript, der versaut ist, ist: rec=rec","$i
Wie umgehe ich das?
'while (i <= NF)' sollte die fehlende 0 am Ende beheben. – ReluctantBIOSGuy