[gelöst] AWK Problem

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Wormi
Beiträge: 123
Registriert: 08.08.2004 09:21:03
Kontaktdaten:

[gelöst] AWK Problem

Beitrag von Wormi » 15.01.2010 13:57:48

Hallo zusammen,

habe eine kleines AWK Problem in meinem Shell Script.
Habe folgende Zeile:

Code: Alles auswählen

echo 1 2 3 | awk '{print $1 $2}' 
Möchte aber nun die Werte nicht ausgeben, sondern jeweils in eine Variable speichern die ich auch im weiteren Verlauf im Shell-Script weiter verwenden kann.

Ist das möglich??

Gruß Wormi

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: AWK Problem

Beitrag von Meillo » 15.01.2010 14:03:01

Code: Alles auswählen

var1="`echo 1 2 3 | awk '{print $1}'`"
var2="`echo 1 2 3 | awk '{print $2}'`"
Use ed once in a while!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: AWK Problem

Beitrag von Duff » 15.01.2010 14:09:40

Oder in der bash mit $(..).

Code: Alles auswählen

duff@man:~# var1=$(echo 1 2 3 |awk '{print $2}');echo $var1
2
Oh, yeah!

Wormi
Beiträge: 123
Registriert: 08.08.2004 09:21:03
Kontaktdaten:

Re: AWK Problem

Beitrag von Wormi » 18.01.2010 12:28:32

Vielen dank, es hat geklappt.

Habe nun ein weiteres Problem, möchte aber ungern ein neues Thema eröffnen....

Ich lese über die Konsole meine Datenbank komplett aus. Leider steht dann ja alles hintereinander. Gibt es eine Möglichkeit nach jeder 4. Zeichenkette einen Absatz zu machen, damit wenn ich es in eine Datei schreiben lasse nicht alles hintereinander steht?

Gruß

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: AWK Problem

Beitrag von Meillo » 18.01.2010 12:48:16

Wormi hat geschrieben: Leider steht dann ja alles hintereinander. Gibt es eine Möglichkeit nach jeder 4. Zeichenkette einen Absatz zu machen, damit wenn ich es in eine Datei schreiben lasse nicht alles hintereinander steht?
Pipe die Ausgabe durch ein Script das nach jeder vierten Zeile eine Leerzeile ausgibt.

Code: Alles auswählen

... | awk '{print} NR%4 == 0 {print ""}'
Use ed once in a while!

Wormi
Beiträge: 123
Registriert: 08.08.2004 09:21:03
Kontaktdaten:

Re: AWK Problem

Beitrag von Wormi » 18.01.2010 13:22:04

Habe ich nun getan, jedoch erscheint die Ausgabe immer noch alles in einer Zeile. Es kommt aber auch keine Meldung das die Syntax falsch wäre oder sonstiges.

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: AWK Problem

Beitrag von Meillo » 18.01.2010 13:29:58

Wenn alles in *einer* Zeile steht, funktioniert mein Script natürlich nicht. Aber was ist auch schon eine ``Zeichenkette''. Meine Antwort war so gut wie deine Frage -- wenn deine Frage nicht genau genug war, dann war meine Antwort folglich auch nicht passend genug. ;-)

Poste am besten Das-habe-ich-Daten und Das-will-ich-Daten. Dann können wir dir was schreiben das das eine in das andere umwandelt. Das ist meist der effektivste Ansatz für solche Probleme.
Use ed once in a while!

Wormi
Beiträge: 123
Registriert: 08.08.2004 09:21:03
Kontaktdaten:

Re: AWK Problem

Beitrag von Wormi » 18.01.2010 14:15:47

Hast ja Recht, hast ja Recht :wink: :wink:

Also, habe folgendes:

Code: Alles auswählen

[mysql-abfrage] | [mysql-connect] 

Code: Alles auswählen

"SELECT * FROM tabelle ORDER BY id" | -h [host] -u [user] --password=[passwort] --database [datenbank]
Das kommt nun natürlich alles in einer Zeile als Ausgabe. In meinem Fall sind es 4 Felder pro Zeile in der Datenbank. Möchte aber nun das jeder "Datensatz" in eine eigene Zeile ausgegeben wird, damit es für mich übersichtlicher ist und ich es weiter verarbeiten kann.

Ich hoffe ich habe es nun einigermaßen verständlich erklärt. :wink:

Gruß

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: AWK Problem

Beitrag von Meillo » 18.01.2010 14:28:46

Jetzt hast du zwar genauer erklärt was du machst, doch was ich gerne hätte ist ein paar Zeilen der Ausgabe, die ich bei mir auf der Festplatte in eine Datei kopieren kann, um Daten zu haben wenn ich ein Script dafür schreibe. Zudem sehe ich dann welcher Art die Daten sind und kann mich somit für oder gegen eine bestimmte Umsetzung entscheiden. Und ich sehe sofort ob mein Script funktioniert und muss es nicht erst dir posten, damit du es ausprobierst und mich dann darüber informierst, dass es ``nicht tut'' ...

Wenn ich zufällig einen Mysql-Server hätte, dann könnte ich mir (nach deiner Beschreibung) vielleicht selbst Daten generieren. Doch vielleicht habe ich noch nie was von Mysql gehört, aber ich kann Scripte schreiben die Text verarbeiten. Dann könnte ich dir nicht helfen. Warum gibst du mir denn nicht einfach den Text den du hast, und den selben nochmals, jedoch von dir von Hand so umformatiert wie er sein soll? Zehn oder zwanzig Zeilen reichen ja schon.

Dann müsste ich nämlich nicht rumraten was es für Daten sind, wie das vielleicht aussehen könnte, was du vermutlich willst ... sondern ich könnte einfach *helfen*.


(Meine Formulierungen hörten sich jetzt vielleicht nicht sehr nett an, aber ich wollte damit nur deutlicher machen wie das ist wenn man auf der anderen Seite sitzt. Ich helfe nur zu gerne, doch kann ich das nur dann (effektiv) wenn ich den richtigen Input bekomme.)


P.S.
Falls irgendwo vertrauliche Daten drinstecken, dann kannst du sie ja anonymisieren.



Hier ein schönes Beispiel: http://debianforum.de/forum/viewtopic.php?f=34&t=113727
Use ed once in a while!

Wormi
Beiträge: 123
Registriert: 08.08.2004 09:21:03
Kontaktdaten:

Re: AWK Problem

Beitrag von Wormi » 18.01.2010 15:47:50

Ich verstehe was du mir sagen willst, das ist auf eine Art sicherlich auch vollkommen richtig.
Allerdings bin ich bisher immer der Typ gewesen der sein Problem eher umschreibt um es auch "globaler" in der Anwendung zu halten und es durch Ansätze selber zu lösen, anstatt einfach ein Bröckchen hin zu werfen und zu sagen "schau hier: nun mach mir das ma richtig".
Ist natürlich einfacher und auch genauer für ein spezielles Problem, aber wie ich finde macht man es sich auch recht einfach damit und der Lerneffekt um es mal selber zu lösen nicht gerade hoch.

Aber mal back to Topic :D

Problem ist eigentlich von selbst gelöst durch nen vorherigen falschen Gedankengang.
Hatte (warum auch immer) im Script das Ergebnis in eine Variable ausgegeben lassen. Somit halt er halt auch alles hintereinander geschrieben...

Code: Alles auswählen

[root@rechner test]# var=`echo "SELECT * FROM test ORDER BY id" | [mysql_connect]` 
[root@rechner test]# echo $var
id name pw perso-nr 1 hans kzhgdeskjsdghk 186.456.3.1 2 peter sdghfgfdghfghc 273.999.9.9 3 fritz sedluihncmmödljd 123.456.7.8 4 elke nbkjbnsd 323.367.1.6
So funktioniert es nun!

Code: Alles auswählen

[root@rechner test]# echo "SELECT * FROM test ORDER BY id" | [mysql_connect]
id      name    pw      perso-nr
1       hans    kzhgdeskjsdghk  186.456.3.1
2       peter   sdghfgfdghfghc  273.999.9.9
3       fritz   sedluihncmmödljd        123.456.7.8
4       elke    edsnbkjbnsd     323.367.1.6
Vielen dank aber für deine gut gemeinte Hilfe. :D
Find es gut das du dich mit den Usern "beschäftigst" und nicht nur stumpf antwortest.

Gruß Wormi

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: AWK Problem

Beitrag von Meillo » 18.01.2010 16:28:27

Wormi hat geschrieben:Ich verstehe was du mir sagen willst, das ist auf eine Art sicherlich auch vollkommen richtig.
Allerdings bin ich bisher immer der Typ gewesen der sein Problem eher umschreibt um es auch "globaler" in der Anwendung zu halten und es durch Ansätze selber zu lösen, anstatt einfach ein Bröckchen hin zu werfen und zu sagen "schau hier: nun mach mir das ma richtig".
Ist natürlich einfacher und auch genauer für ein spezielles Problem, aber wie ich finde macht man es sich auch recht einfach damit und der Lerneffekt um es mal selber zu lösen nicht gerade hoch.
Dem stimme ich voll zu und will das auch unterstützen. Beispieldaten sind jedoch so gut wie immer hilfreich um ein Problem besser zu verstehen. Ich hatte jedenfalls in diesem Thread Schwierigkeiten damit das Problem zu erfassen.

Problem ist eigentlich von selbst gelöst durch nen vorherigen falschen Gedankengang.
Hatte (warum auch immer) im Script das Ergebnis in eine Variable ausgegeben lassen. Somit halt er halt auch alles hintereinander geschrieben...
Ahh, das erklärt das Verhalten natürlich. Und noch schöner, dass du dein Problem selbst gelöst hast. :-)

Find es gut das du dich mit den Usern "beschäftigst" und nicht nur stumpf antwortest.
Danke. Ich hatte auch Spaß in diesem Thread. ;-)


(Ich markiere den Thread dann mal als gelöst.)
Use ed once in a while!

Antworten