InfinityX Geschrieben 9. April 2014 Teilen Geschrieben 9. April 2014 Hallo zusammen, ich habe folgendes Problem. Ich bekomme zufällig irgendwelche automatisch generierte Textdateien, welche verschiedene Namen (DatumUhrzeit) und einen internen Aufbau im Stil von TEXT|TEXT|TEXT haben. Ich habe nun ein Script geschrieben, welches eine dieser Dateien nimmt und den Inhalt mit cut in eine variable schreibt. Var1=`cut -d "|" -f1 $DATEI` Wenn ich das jetzt aber in eine Datenbank schreiben möchte, schreibt er ja bei mehrzeiligen Textdateien alle Zeilen von f1 rein... cut -b bringt mir leider nichts, da die Texte innerhalb der Spalten verschieden lang sind.. Was gibt es denn hier für einen Befehl, wie man nur die Zeile 1 cutten kann, im nächsten Schritt Zeile 2 etc? Vielen Dank schonmal LG InfinityX / Jonas Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
uenetz Geschrieben 10. April 2014 Teilen Geschrieben 10. April 2014 Servus InfinityX, Deine Beschreibung ist ungenau. Bitte beschreibe Dein Anliegen so, dass man es auch nachvollziehen kann. Auch wäre es interessant zu erfahren, wie das Script derzeit ausschaut. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InfinityX Geschrieben 10. April 2014 Autor Teilen Geschrieben 10. April 2014 GuMo Bsp .txt Datei: Status|Datum|Uhrzeit|Standort|Meldung Status|Datum|Uhrzeit|Standort|Meldung Status|Datum|Uhrzeit|Standort|Meldung Wenn ich das nun mit meinem vorhandenen Script cutte und in eine Variable schreibe, bekomme ich für Spalte 1: Status Status Status Ich brauche jedoch für den Eintrag in die DB jeweils immer eine einzeilige Variable da sonst alle 3 Zeilen in die DB geschrieben werden... Hier mein bisheriges Script: #!/bin/bash DATA=`ls /script/. | grep .txt | head -1` i=1 INHALT=`cat /script/$DATA | wc -l` while [ $i -le $INHALT ] do i=$(($i+1)) status=`cut -d "|" -f1 $DATA` datum=`cut -d "|" -f2 $DATA` uhrzeit=`cut -d "|" -f3 $DATA` standort=`cut -d "|" -f4 $DATA` meldung=`cut -d "|" -f5 $DATA` mysql -u USER --password=PW << EOFMYSQL INSERT INTO DB.Meldungen (Status, Datum, Uhrzeit, Standort, Meldung) VALUES ('$status', '$datum', '$uhrzeit', '$standort', '$meldung'); EOFMYSQL done echo "Data" $DATA; echo "Inhalt" $INHALT; echo "anzahl" $ANZAHL; echo "status" $status; echo "datum" $datum; echo "uhrzeit" $uhrzeit; echo "standort" $standort; echo "meldung" $meldung; echo "i" $i; mv $DATA ./used/$DATA LG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
InfinityX Geschrieben 10. April 2014 Autor Teilen Geschrieben 10. April 2014 Hat sich erledigt... Lösung: IFS=$'\012' for i in $(cat $DATA); do status=$(echo $i cut -d "|" -f1 | tr "$IFS" '\n') datum=$(echo $i cut -d "|" -f2 | tr "$IFS" '\n') uhrzeit=$(echo $i cut -d "|" -f3 | tr "$IFS" '\n') standort=$(echo $i cut -d "|" -f4 | tr "$IFS" '\n') meldung=$(echo $i cut -d "|" -f5 | tr "$IFS" '\n') mysql -u USER --password=PW << EOFMYSQL INSERT INTO DB.Meldungen (Status, Datum, Uhrzeit, Standort, Meldung) VALUES ('$status', '$datum', '$uhrzeit', '$standort', '$meldung'); EOFMYSQL done trotzdem Danke LG Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.