Programm / Skript gesucht, das folgendes tut...
-
grep müsste ich ja 3x starten (weil ich nach drei verschiedenen schlüsselbegriffen suche)
und von shellskripten habe ich keine ahnung ...
aber danke schonmal soweit !
-
Benja_m schrieb:
grep müsste ich ja 3x starten (weil ich nach drei verschiedenen schlüsselbegriffen suche)
Nein, grep kann ja auch mit RegExps suchen, probier zB mal folgendes:
egrep "(foo|bar)"
und von shellskripten habe ich keine ahnung ...
Tja, allerhöchste Zeit, ein bisschen zu lesen:
http://pegasus.rutgers.edu/~elflord/unix/bash-tute.html
http://www.tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html
http://www.tldp.org/LDP/abs/html/
-
nman schrieb:
CStoll schrieb:
Du könntest prog1 per man: popen starten und dann dessen Ausgaben zeilenweise lesen (fgets), vergleichen und bei Bedarf speichern. Wenn du damit durch bist, rufst du prog2 auf etc.
Sowas würde ich auf keinen Fall mit C lösen, das ist als Shellscript maximal ein Dreizeiler.
Wenn du meinst
Von Shell-Scripten habe ich leider keine Ahnung (ist das vergleichbar mit Batch-Programmierung?) - deshalb wäre ich wohl den umständlicheren Weg gegangen.
-
CStoll schrieb:
Von Shell-Scripten habe ich leider keine Ahnung (ist das vergleichbar mit Batch-Programmierung?)
Jap, nur etwas mächtiger.
MfG
GPC
-
oki, ich bin jetzt soweit, das ich mittels egrep genau die drei gesuchten Zeilen finden kann. Die sehen ungefähr so aus:
5 .bss 00000860 10002160 10002160 00000000 2**4 00400460 <t_run_test>: 400c10: 02 00 00 00 jal 4022d0 <th_report_results>
Was ich brauche sind die zweite und dritte Zahl der ersten Zeile (860 und 10002160)
dann brauche ich die Zahl der zweiten Zeile und die letzte zahl (4022d0) der dritten Zeile
erschwerend kommt hinzu, dass die zahlen hexadezimal sind.
Da bin ich jetzt schon wieder überfragt
Wenn mir jemand einen kurzen Denkanstoß geben könnte ... ?
Dankeschön !!!
-
CStoll: Viel, viel, viel, ... , viel mächtiger.
Benja_m: Puh, ist das hässlich, kannst Du die Ausgabe nicht ein bisschen hübscher machen?
Sonst musst Du nämlich mit etwas in der Art hier arbeiten (gawk):
BEGIN { FS=" " RS="\n" ORS="" } { switch (FNR) { case 1: print $3, $4 break case 2: print $1 break case 3: print $7 break default: } print "\n" }
-
nman schrieb:
Benja_m: Puh, ist das hässlich, kannst Du die Ausgabe nicht ein bisschen hübscher machen?
Nein, leider nicht
nman schrieb:
Sonst musst Du nämlich mit etwas in der Art hier arbeiten (gawk):
BEGIN { FS=" " RS="\n" ORS="" } { switch (FNR) { case 1: print $3, $4 break case 2: print $1 break case 3: print $7 break default: } print "\n" }
wofür steht "FNR" und wozu brauchst du FS, RS usw ?
was bedeutet gawk ?
*nerv* <- sorry dafür !
Danke schonmal !
-
Benja_m schrieb:
wofür steht "FNR" und wozu brauchst du FS, RS usw ?
http://www.google.at/search?q=Awk+by+example%2C+Part+1
http://www.google.at/search?q=Awk+by+example%2C+Part+2
http://www.google.at/search?q=Awk+by+example%2C+Part+3was bedeutet gawk ?
Gnu man: awk.
-
das is mir dann doch ne nummer zu hoch auf die schnelle.
werde einfach einen systemcall auf egrep machen und die ausgabe davon mit std::getline() einlesen und in meinem c++-programm direkt auswerten.
da weiß ich wie es geht.Danke !
-
Benja_m schrieb:
das is mir dann doch ne nummer zu hoch auf die schnelle.
Mein Code gibt einfach für die erste Zeile den dritten und vierten Wert aus, für die zweite Zeile den ersten und für die dritte Zeile den siebenten. FS ist der Field-Separator und RS der Record-Separator.
werde einfach einen systemcall auf egrep machen und die ausgabe davon mit std::getline() einlesen und in meinem c++-programm direkt auswerten.
da weiß ich wie es geht.Wenn Du das ohnehin zu Fuß implementierst, dann brauchst Du dafür eigentlich kein grep; schreib Dein Programm einfach als passenden Filter.
Im Grunde sind alle Lösungen nicht optimal, aber das liegt vor allem an der hässlichen Ausgabe...
-
ma guckn was ich nu davon mache
das is das ausgabeformat von "objdump" - da kann ich nix dran machen