Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Ergebnis Filtern
Gehen Sie zu Seite 1, 2, 3  Weiter
 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 30. Aug 2001 19:41   Titel: Ergebnis Filtern

Hallo zusammen,
ich bekomme von dem Programm mysql folgende Art von ausgabe:

code:

************ row1 ************
name: stingway
inr: 1
************ row2 ************
name: test
inr: 2



Die liste kann beliebig lang werden. Nun brauche ich ein Bash Script, das den Befehl ausführt, und die felder von "name" und "inr" filtert und z.B. mit echo ausgibt. Kann mir da jemand weiterhelfen ?

Ich dachte an eine schleife, die jedes Elemet
code:

************ row1 ************
name: stingway
inr: 1
************ row2 ************
name: test
inr: 2


in der Ausgabe durchläuft. Nun muss in der Schleife die Filterung passieren, wovon ich leider gar keine ahnung habe...

Wäre euch sehr sehr dankbar!!!
_________________
System: SuSe 7.0 - Kernel 2.2.16 - Textkonsole
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

ratte
Gast





BeitragVerfasst am: 30. Aug 2001 22:52   Titel: Re: Ergebnis Filtern

in der bash grep

fuer ne perl regular expression bin ich leider zu muede...

gute nacht
ratte
 

Jochen
Gast





BeitragVerfasst am: 31. Aug 2001 6:57   Titel: Re: Ergebnis Filtern

Versuch mal folgendes:

code:

mysql ...hier_dein Kommando... | \
awk '
$1 == "name:" {
name = $2
}
$1 == "inr:" {
print name, inr
}'

 

Jochen
Gast





BeitragVerfasst am: 31. Aug 2001 6:58   Titel: Re: Ergebnis Filtern

AAARGH! Dass man die Fehler aber immer erst zu spät sieht! *seufz*
Noch mal:
code:

mysql ...hier_dein Kommando... | \
awk '$1 == "name:" {
name = $2
}
$1 == "inr:" {
print name, $2
}'


So, diesmal aber!
 

stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 31. Aug 2001 19:01   Titel: Re: Ergebnis Filtern

Also, der Sachverhalt hat sich leicht verändert. Nun sieht das Muster nur noch so aus:

code:

************ row1 ************
name: stingway
************ row2 ************
name: test



Nun benutze ich:

code:

************ row1 ************
name: stingway
************ row2 ************
name: test


Das führt aber zu der Ausgabe:
code:

************ row1 ************
name: stingway
************ row2 ************
name: test



Ich hätte aber gerne als Augabe nur den Wert. Kann mri ncohmal jemand helfen... DANKE!
_________________
System: SuSe 7.0 - Kernel 2.2.16 - Textkonsole


Zuletzt bearbeitet von stingway am 31. Aug 2001 19:01, insgesamt 2-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 31. Aug 2001 19:04   Titel: Re: Ergebnis Filtern

Hm, irgendwie lässt sich die nachricht nicht editieren. ich meine es führt zur Ausgabe:

code:

name: stingway
name: test

 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 31. Aug 2001 20:04   Titel: Re: Ergebnis Filtern

So ich ahbe auch noch eien Lösung gefunden:

code:

mysql -uw -ps -e"Select name from test" -E db1 | grep "name: "



Leider ist diese Ausgabe auch wieder, so wie oben!

name: Stingway
name: ....

Wie schon gesagt brauch ich den namen einzeln!... und eigentlich soll auch jedes Elemtn der abfrage als Kommando ausgeführt werden... ich bitte um Hilfe, denn irgendwie verzweifel ich *g
_________________
System: SuSe 7.0 - Kernel 2.2.16 - Textkonsole


Zuletzt bearbeitet von stingway am 31. Aug 2001 20:04, insgesamt 1-mal bearbeitet
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

hugenay
Gast





BeitragVerfasst am: 31. Aug 2001 20:33   Titel: Re: Ergebnis Filtern

mysql -uw -ps -e"Select name from test" -E db1 | grep "name: " | awk '{ print $2 }'

meinst du sowas? kannst auch auf grep verzichten und das nur mit sed oder awk erledigen.
sorry falsch verstanden hab, hab noch nicht den ganzen thread gelesen.
 

stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 31. Aug 2001 20:46   Titel: Re: Ergebnis Filtern

Danke! ... das klappt schonmal wunderbar!
Nun müssen die Elemente nur noch als Befehl ausgeführt werden können.
Aber ich glaube da ergibt sich schon das erste Probelm, denn was ist wenn ein feld (name) z.B. so aussieht:

ls -l

dann gibt mir das Programm nämlich nur "ls" aus. Gibt es die möglich bei awk , alles AB dem 2. Wort auszugeben ? - Damit müsste mein problem doch eigentlich gelöst sein.... achja und der Befehl, der das ganze dann noch anschließend als Befehl für die Bash macht fehlt auch noch...
Ich bin euch jetzt schon sehr sehr dankbar, aber ich habe Bash noch nie programmiert und bin daher noch "Frischfleisch"
_________________
System: SuSe 7.0 - Kernel 2.2.16 - Textkonsole
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

hugenay
Gast





BeitragVerfasst am: 31. Aug 2001 21:10   Titel: Re: Ergebnis Filtern

statt awk dann sed:
sed 's/^[a-zA-Z0-9_-]* //'
mit awk faellt mir nur ein ne schleife zu machen, die vom 2ten bis zum letzten Feld (=NF) alles ausdruckt, das ist kacke. Bei dem regulaeren Ausdruck oben in sed musst du natuerlich aufpassen, dass Kommandos nicht da rausfallen oder mit nem Leerzeichen anfangen.
Oder nimm cut:
cut -d" " -f2-
Auch hier kein Leerzeichen am Anfang!

Was meinst du mit dem Befehl, der das fuer die bash startet?
 

stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 31. Aug 2001 21:20   Titel: Re: Ergebnis Filtern

Hi, danke erstmal wieder für die Antwort. mit sed ist fast perfekt... es wird nun

: wert

angezeigt. also ein ":" und "Lerrzeichen" noch zuviel.

Mit ausführbar mein ich, dass das script dieses element nun als Befehl ausführt. So wie z.B. "ls -l" ein befehl ist.
_________________
System: SuSe 7.0 - Kernel 2.2.16 - Textkonsole
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

hugenay
Gast





BeitragVerfasst am: 31. Aug 2001 22:05   Titel: Re: Ergebnis Filtern

achso, z.b.: $(kommandoliste) oder mit backticks `kommandoliste`

cut muesste eigtl. trotzdem funktionieren, bei sed musst du dann halt noch den ":" in den Bereich in [ ] einfuegen (direkt am Anfang).
 

ratte
Gast





BeitragVerfasst am: 31. Aug 2001 22:58   Titel: Re: Ergebnis Filtern

@Stingway

Nachrichten lassen sich nur editieren, wenn du dich im forum eingelogt hast.

sonst koennte ja jeder lamer unsinn damit fabrizieren...

ratte
 

stingway



Anmeldungsdatum: 06.07.2001
Beiträge: 164

BeitragVerfasst am: 01. Sep 2001 10:22   Titel: Re: Ergebnis Filtern

Hallo,
alles funktioniert nun wunderbar. Vielen Dank @hugenay. Ein dummer Fehler ist nur noch da.

Solange 1 Elemet in der Datenbankda ist funktioniert alles.

code:

$(mysql -uw -ps -e"Select name from test" -E db1 | grep "name:" | sed 's/^[:a-zA-Z0-9_-]*//')



Wenn ein zweites Elemtn da gibt es eine Fehlemeldung. Als Beispiel:

In der Datenbnak sind

1. "ls -l"
2. "exit"

Dann meldet das Script:

exit: bad non-numeric arg `ls'

Das sieht natürlich danach aus, als ob das Script die beiden Elemete nciht als EINZEL Befehle interpretiert, sondern zusammen ausführt und das geht natürlich nciht!
Wie kann ich das umgehen ?


@ratte
Mit dem Editieren ud dem Login ist klar. ... nur ich weiß warum: Editiert mal eine Nachricht in dem du 2MAL dieses code aus dem Boatd benutzt. Das 2 code lässt sich dann nicht mehr editieren....
_________________
System: SuSe 7.0 - Kernel 2.2.16 - Textkonsole
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden

hugenay
Gast





BeitragVerfasst am: 01. Sep 2001 11:03   Titel: Re: Ergebnis Filtern

sitze gerade aus unerfindlichen gruenden an nem windowsrechner. Daher ganz spontan: ersetze mit sed name: durch ;.
also: sed 's/^[:a-zA-Z0-9_-]*/;/')
ist das grep "name:" uebrigens noetig? wenn waere fgrep schneller in diesem fall.
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Gehen Sie zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy