AWK und Schleifen

S

SchneeMann3000

Jungspund
Hallo,

habe leider noch nicht viel gescriptet :-( und stehe nun vor folgendem Problem:

i=1
while [ $i -le 10 ]
do
ID$i=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' ' {print $$i}'`
echo $ID$i
i=`expr $i + 1`
echo "insert into smarttest (Datum,IDENTNR,ATTRIBUTE_NAME,FLAG,VALUE,WORST,THRESH,TYPE,UPDATED,WHEN_FAILED,RAW_VALUE) VALUES ('$DATE','$ID01','$ID02','$ID03','$ID04','$ID05','$ID06','$ID07','$ID08','$ID09','$ID10');"
done


Ein paar Leerzeichen werden hier irgendwie nicht angezeigt...

Wie man hoffentlich sieht möchte ich aus der Ausgabe von smartctl etwas in eine MySQL-Datenbank speichern, allerdings weiss ich nicht wie ich das an den "rot" markierten Stellen machen soll. Bzw ob dies überhaupt so gehen würde :think:

Hiermit habe ich genau das was ich haben will, aber sowas finde ich nicht so optimal...: (vorallem wenn es nun 100 Punkte zum abarbeiten wären)

ID01=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $1}'`
ID02=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $2}'`
ID03=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $3}'`
ID04=`cat $DATEI | grep "Reallocated_Sector_Ct"| awk -F ' ' '{print $4}'`
ID05=`cat $DATEI | grep "Reallocated_Sector_Ct"| awk -F ' ' '{print $5}'`
ID06=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $6}'`
ID07=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $7}'`
ID08=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $8}'`
ID09=`cat $DATEI | grep "Reallocated_Sector_Ct" | awk -F ' ' '{print $9}'`
ID10=`cat $DATEI | grep "Reallocated_Sector_Ct"| awk -F ' ' '{print $10}'`

echo "<--SQL INSERT-->"
echo "insert into smarttest (Datum,IDENTNR,ATTRIBUTE_NAME,FLAG,VALUE,WORST,THRESH,TYPE,UPDATED,WHEN_FAILED,RAW_VALUE) VALUES ('$DATE','$ID01','$ID02','$ID03','$ID04','$ID05','$ID06','$ID07','$ID08','$ID09','$ID10');"


Kennt sich damit vielleicht jemand besser aus? (bin ich mir sicher)
Danke
Gruss
SchneeMann
 
Code:
i=1
while [ $i -le 10 ]
do
        a=\$$i
        ID[$i]=`grep "Reallocated_Sector_Ct" $DATEI | awk -F " " "{print $a}"`
        echo ${ID[$i]}
        i=`expr $i + 1`
done

Bei mir ist es jetzt ein Array. Aber sonst funktioniert es. Dein echo "insert..." musst du aber erst machen nachdem das ganze Array erstellt wurde.
 

Ähnliche Themen

sed in awk

Grafische Anzeige der Temperatur

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Sed: Bestimmtes Feld einer "Zeile mit mehreren Feldern" ergänzen

skript zum löschen doppelter dateien

Zurück
Oben