Sie sind nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Linux Forum Linux-Web.de. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Elessar

Aran Gondor

  • »Elessar« ist männlich
  • »Elessar« ist der Autor dieses Themas

Beiträge: 105

Wohnort: Köln

Beruf: Schüler...

  • Nachricht senden

1

14.01.2007, 20:54

Datei auslesen und Rangliste erstellen

Hallo,

ich hab mal ne Frage, und zwar, möchte ich ein Skript schreiben, welches eine Text-datei (ist eine Access-list vom Router) und dann die Matches in einer Rangliste ordnet. Doch wie kann ich nen Algorithmus erstellen, der erkennt, wieviele Matches bei welchem Eintrag waren, ich komm da immoment garnicht weiter.


Wäre nett, wenn mir jemand helfen könnte,


Gruß

Elessar

P.s.: Hatte vor, dass Skript in Perl zu schreiben.

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

2

14.01.2007, 21:00

RE: Datei auslesen und Rangliste erstellen

gib mal ein beispiel für den inhalt der datei.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Elessar

Aran Gondor

  • »Elessar« ist männlich
  • »Elessar« ist der Autor dieses Themas

Beiträge: 105

Wohnort: Köln

Beruf: Schüler...

  • Nachricht senden

3

14.01.2007, 23:29

192.168.178.24 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (500 matches)

müsste ungefähr so aussehen, hab die daten jetzt nicht, aber so ungefähr.

Das Dickgedruckte mödchte ich irgendwie haben... Also dann in dieser "top 10"

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Elessar« (14.01.2007, 23:30)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

4

14.01.2007, 23:57

also perl braucht man nicht unbedingt!

also wenn die liste zb so aussieht

inhalt der datei liste:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
192.168.178.2 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (5 matches)
192.168.178.4 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (522 matches)
192.168.178.7 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (15 matches)
192.168.178.9 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (50 matches)
192.168.178.24 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (17 matches)
192.168.178.14 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (23 matches)
192.168.178.17 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (45 matches)
192.168.178.23 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (78 matches)
192.168.178.20 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (70 matches)
192.168.178.22 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (55 matches)
192.168.178.100 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (77 matches)
192.168.178.109 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (99 matches)
192.168.178.1 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (1 matches)
192.168.178.9 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (63 matches)
192.168.178.3 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (91 matches)
192.168.178.77 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80 (500 matches)


cat liste | tr "()" " " | sort -t' ' -n +6 -7

ausgabe:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
192.168.178.1 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  1 matches 
192.168.178.2 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  5 matches 
192.168.178.7 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  15 matches 
192.168.178.24 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  17 matches 
192.168.178.14 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  23 matches 
192.168.178.17 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  45 matches 
192.168.178.9 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  50 matches 
192.168.178.22 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  55 matches 
192.168.178.9 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  63 matches 
192.168.178.20 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  70 matches 
192.168.178.100 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  77 matches 
192.168.178.23 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  78 matches 
192.168.178.3 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  91 matches 
192.168.178.109 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  99 matches 
192.168.178.77 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  500 matches 
192.168.178.4 255.255.255.0 192.xxx.xxx.xxx 255.255.255.0 80  522 matches


für die umgekehrte sortierreihenfolge:
cat liste | tr "()" " " | sort -t' ' -r -n +6 -7
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

Elessar

Aran Gondor

  • »Elessar« ist männlich
  • »Elessar« ist der Autor dieses Themas

Beiträge: 105

Wohnort: Köln

Beruf: Schüler...

  • Nachricht senden

5

15.01.2007, 10:03

Danke, aber ich wollte das alles automatisieren, dass man nur mal eben das Script aufruft und dann die Liste automatisch erstellt wird. Brauch man auch dafür kein Perl?

Gruß

Elessar

linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

6

15.01.2007, 12:23

wie gesagt, perl ist nicht unbedingt notwendig um die liste zu sortieren.
ein shellscript kann das auch.
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

7

15.01.2007, 19:35

Shell:
cat router.dump | sort | uniq -c

fertig.

Ich empfehle plotmtv zur Visualisierung.

UPS! Rangliste vergessen....
cat router.dump | sort | uniq -c | sort -nr
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bonsai« (15.01.2007, 19:40)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

8

15.01.2007, 19:49

UUOC
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

9

15.01.2007, 21:17

@strcat

so liebe ich deine posts:

:+++: kommentarlos und essentiell :+++:
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

10

15.01.2007, 22:28

Das war ein Hinweis und keine Korrektur auf einen Fehler.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

11

15.01.2007, 22:46

das hab ich wohl verstanden ... UUOC laesst sich ja trefflich googlen

... und als gewohnheits-cat-nutzer hab ich mal wieder was dazu gelernt

... bin fuer solche hinweise dankbar
... ich lese oft dinge, die ich ohne deine einzeiler nie gefunden haette
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »epikur« (15.01.2007, 22:49)


linuxerr

Prof. Dr. Schlaumeier

  • »linuxerr« ist männlich

Beiträge: 8 557

Wohnort: Mecklenburg, zur Entwicklungshilfe in Chemnitz/Sachsen ;-)

  • Nachricht senden

12

15.01.2007, 22:54

hey,
klärt ihr mich auf wovon ihr redet?
geht es um das cat vor dem sort in bonsais beitrag, wo doch sort die datei direkt einlesen kann oder was :?
Die Rechtschreibfehler in diesem Beitrag sind nicht urheberrechtlich geschützt.
Jeder der einen findet darf ihn behalten und in eigenen Werken weiterverwenden.

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

13

15.01.2007, 22:57

Ja.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

14

16.01.2007, 10:55

strcat/epikur: Quatsch - es gibt selten eine sinnvollere Verwendung von cat. Was weiss ich, was der fuer ein Prograemmchen*) nutzt um seine daemliche Datei zu erzeugen. Durch "cat router.dump" erspare ich mir vier Zeilen Gelaber. Diese muss ich danach allerdings trotzdem schreiben, um die Verwendung von cat zu rechtfertig.

UUOC = Useless Use Of Cat, linuxerr.

*) ist mir auch egal.
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bonsai« (16.01.2007, 10:56)


15

16.01.2007, 11:02

@bonsai
... ist ja nicht so, dass ich nie wieder cat verwenden werde
das gewoehn ich mir nicht einfach ab - und auch nur da wo es sinn macht.

trotzdem gut, wenn man seinen code gelegentlich ueberdenkt [mach ich selten genug] ...
... als bekennender nicht-programmierer

und solche krankheiten wie z.b. die backticks muss man sich ersparen =D
wie soll ich wissen, was ich denke?
... bevor ich hoere, was ich sage
... bevor ich lese, was ich schreibe

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

16

16.01.2007, 11:35

Zitat

das gewoehn ich mir nicht einfach ab - und auch nur da wo es sinn macht.


Meine These ist, es macht HIER Sinn, da cat die tolle Angewohnheit hat ein aeusserst einfachen (klar ersichtlichen) stream zu liefern. :)

Du koenntest dem sort zwar die Datei mitgeben, aber wenn Du gar nicht in eine Datei logst, sondern nur einen Stream hast, ist es so selbsterklaerend.

Der Performancegewinn von
"sort router.dump | uniq -c | sort -nr"
auf Kosten der Klarheit ist fuer mich zu gering.

Ganz einfach.

Interessanter ist eine "TopTen" zu erstellen:

cat router.dump | sort | uniq -c | sort -nr | head

Top15:
cat bla.test | sort | uniq -c | sort -nr | head -n 15

Oder die lokalen Maschinen auszunehmen....

cat bla.test | sort | uniq -c | sort -nr | grep -v 192.168.1.

etc.

Oder eben eine Visualisierung mit plotmtv....etc.
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »bonsai« (16.01.2007, 11:38)


strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

17

16.01.2007, 12:06

Zitat

Original von bonsai
Meine These ist, es macht HIER Sinn, da cat die tolle Angewohnheit hat ein aeusserst einfachen (klar ersichtlichen) stream zu liefern. :)


Trotzdem ist es sinnlos. cat(1) gibt den Inhalt der Datei an STDOUT und anschliessend durch die Pipe an STDIN von uniq(1) (um bei dem Beispiel zu bleiben). Was hat also das cat(1) fuer einen logischen Sinn?


Zitat

Du koenntest dem sort zwar die Datei mitgeben, aber wenn Du gar nicht in eine Datei logst, sondern nur einen Stream hast, ist es so selbsterklaerend.


Richtig. _Wenn_ man einen Stream hat. Hat er aber nicht, sondern lediglich eine Datei.


Zitat

Interessanter ist eine "TopTen" zu erstellen:

cat router.dump | sort | uniq -c | sort -nr | head

Top15:
cat bla.test | sort | uniq -c | sort -nr | head -n 15

Oder die lokalen Maschinen auszunehmen....

cat bla.test | sort | uniq -c | sort -nr | grep -v 192.168.1.

etc.

Oder eben eine Visualisierung mit plotmtv....etc.


Die exakt gleiche Ausgabe bekommt man ohne cat(1).

Zitat

strcat/epikur: Quatsch - es gibt selten eine sinnvollere Verwendung von cat.

Doch.

Quellcode

1
2
3
cat -n file
cat -v file
cat > /dev/null # Um die Keycodes anzuzeigen



Mir persoenlich is es egal wer was und wie verwendet, aber wieso sollte ich mehr schreiben als notwendig is?
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

bonsai

Prof.Dr. Klugschiss

  • »bonsai« ist männlich

Beiträge: 1 486

Wohnort: N.de

Beruf: Informatiker

  • Nachricht senden

18

16.01.2007, 12:32

Zitat

Trotzdem ist es sinnlos. cat(1) gibt den Inhalt der Datei an STDOUT und anschliessend durch die Pipe an STDIN von uniq(1) (um bei dem Beispiel zu bleiben). Was hat also das cat(1) fuer einen logischen Sinn?


cat hat hier einen erklärenden Sinn, wie ich geschrieben habe. Liest Du auch, oder kopierst Du nur?

Zitat

Richtig. _Wenn_ man einen Stream hat. Hat er aber nicht, sondern lediglich eine Datei.


Hat man oft - daher ein gutes Beispiel.

Zitat

Die exakt gleiche Ausgabe bekommt man ohne cat(1).


Stimmt - dann geht es aber nur, wenn man eine Datei hat. Dann fuehrt es dazu, dass man eine daemliche Frage im Forum stellen muss.

Ich bin nach wie vor der Meinung, dass das "cat" aufgrund seines "erklaerenden Charakters" hier zu Recht steht. Es hat somit einen logischen, wenn auch keinen funktionellen Sinn.

/bernd
Die erste programmgesteuerte Rechenmaschine (Z1) wurde Mitte der 30er Jahre als "nicht patentwürdig" eingestuft. Warum versaut mir das Ding 50 Jahre später immer noch den Tag?

strcat

Unix Gladiator

  • »strcat« ist männlich

Beiträge: 2 331

Wohnort: /Earth/Germany/Bavaria/Regensburg

  • Nachricht senden

19

16.01.2007, 12:42

Zitat

Original von bonsai
cat hat hier einen erklärenden Sinn, wie ich geschrieben habe. Liest Du auch, oder kopierst Du nur?


cat(1) hat in den Beispielen _keinen_ Sinn. Weder einen erklaerenden, noch einen sinnvollen. Man braucht es schlicht und einfach nicht.

Zitat

Hat man oft - daher ein gutes Beispiel.


Und wo hat er den in dem Beispiel?

Zitat

Stimmt - dann geht es aber nur, wenn man eine Datei hat. Dann fuehrt es dazu, dass man eine daemliche Frage im Forum stellen muss.
Ich bin nach wie vor der Meinung, dass das "cat" aufgrund seines "erklaerenden Charakters" hier zu Recht steht. Es hat somit einen logischen, wenn auch keinen funktionellen Sinn.


Das ist - mit Verlaub - Bullshit. cat(1) hat in dem Fall keinen "erklaerenden" Charakter, sondern es verwirrt hoechstens, da der User/Leser/Anfaenger/whatever auf den ersten Blick glaubt das cat(1) noetig ist um eine Datei an ein anderes Programm zu uebergeben (sinnbildlich gesprochen).
Ich werde weiterhin auf UUOC anspielen, weil es definitiv der Fall ist; abgesehen davon UUOC nichts weiter als ein Anfaengerfehler.
Christian 'strcat' Schneider <http://www.strcat.de/>
/* When all else fails, read the instructions. */

renegade

macht was er will

  • »renegade« ist männlich

Beiträge: 2 842

Wohnort: Ostfriesland

Beruf: root

  • Nachricht senden

20

16.01.2007, 13:37

Etwas beim programmieren (und wenn es auch nur shell-scripting ist) zu benutzen was man nicht braucht ist einfach nur dumm da es eine zusätzliche Fehlerquelle ist (auch wenns in diesem Beispiel keinen Fehler gibt) und Performance frisst. Das war schon immer so und wird auch immer so bleiben!
Sokrates (468 v.Chr. - 399 v.Chr.)
"Es ist keine Schande, nichts zu wissen, wohl aber, nichts lernen zu wollen."

Thema bewerten