automatisch wörter zählen
automatisch wörter zählen
Hallo,
ich habe beispielsweise solch eine Datei: 37023
dort möchte ich gern das er automatisch die Kürzel/Wörter erfasst und diese dann zählt, zum Schluss sollte dan soetwas wie:
FER: 53
PSAG:10
TSH:5
etc
rauskommen
ideal wäre etwas mit eine shellscript..
(btw soll auf einem solaris laufen das Script)
ich habe beispielsweise solch eine Datei: 37023
dort möchte ich gern das er automatisch die Kürzel/Wörter erfasst und diese dann zählt, zum Schluss sollte dan soetwas wie:
FER: 53
PSAG:10
TSH:5
etc
rauskommen
ideal wäre etwas mit eine shellscript..
(btw soll auf einem solaris laufen das Script)
Debian-Nutzer
ZABBIX Certified Specialist
ZABBIX Certified Specialist
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: automatisch wörter zählen
Code: Alles auswählen
tr ';' '\n' foo.txt | sort | uniq -c
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Re: automatisch wörter zählen
das scheint leider unter solaris nicht zu gehen:
Code: Alles auswählen
Usage: tr [ -cds ] [ String1 [ String2 ] ]
Debian-Nutzer
ZABBIX Certified Specialist
ZABBIX Certified Specialist
Re: automatisch wörter zählen
Vielleicht so:
Code: Alles auswählen
awk -F";" '{for (i=1;i<=NF;i++){anz[$i]++} } ; END {for (x in anz){print x ": " anz[x]} }' test.txt
Re: automatisch wörter zählen
geil es geht..
das kommt dabei raus:
was heisst : 5136 ??
und kann man es evtl so bei 20 zeilen umbrechen das er dann daneben schreiben??
das kommt dabei raus:
Code: Alles auswählen
TYAKW: 105
IGEW: 47
: 5136
CEA: 439
FT3: 494
19-9: 183
FOLS: 99
DIG: 14
CEN1: 8194
AFP: 39
B12: 186
CARBW: 14
PHNY: 4
CICLW: 15
AHBST: 50
AHBC: 157
HBS: 155
FER: 560
TSHS: 3
AHAVT: 41
DIT: 7
PCALW: 87
BHCG: 53
HIV: 102
CKMB: 197
TNI: 379
T4: 643
AHBS: 90
HAVMW: 24
AHAV: 55
TSH: 2945
AHCV: 193
THEOW: 3
VALPW: 28
ATPOW: 152
CPEP: 18
12-5: 24
15-3: 200
FPSA: 43
PSAG: 346
und kann man es evtl so bei 20 zeilen umbrechen das er dann daneben schreiben??
Code: Alles auswählen
PHNY: 4 CICLW: 15
AHBST: 50 AHBC: 157
HBS: 155 FER: 560
Debian-Nutzer
ZABBIX Certified Specialist
ZABBIX Certified Specialist
Re: automatisch wörter zählen
Ist wohl die Anzahl Einträge, die leer sind. Müsstest du vielleicht noch abfangen. Falls du immer am Ende der Zeile ein Semikolon hast reicht es im übrigen die erste for-Schleife auf "i<NF" (echt kleiner) zu setzen. Sollte dem jedoch nicht der Fall sein wäre diese Änderung fehleranfällig bzw. falsch.was heisst : 5136 ??
Einfacher wäre es nach immer zwei Ausgaben einen Umbruch zu machen. Hierzu bietet sich die Modulo-Funktion (%) an. Natürlich kann man auch 3, 4 oder eine beliebige Anzahl von Ausgaben in eine Zeile schreiben. Das letzte "print" ist dafür da, dass noch einmal ein Newline folgt.und kann man es evtl so bei 20 zeilen umbrechen das er dann daneben schreiben??
Code: Alles auswählen
awk -F";" '{for (i=1;i<=NF;i++){anz[$i]++} } ; END {for (x in anz){j++; printf x ": " anz[x] " "; if (j%2 == 0) printf"\n"} print}' test.txt
Zuletzt geändert von uname am 28.02.2013 13:44:56, insgesamt 1-mal geändert.
Re: automatisch wörter zählen
Code: Alles auswählen
$ awk 'BEGIN { RS = ";|\n"; } { if ("" != $1) d[$1]++; } END { for (data in d) { printf "%3d\t%s\n", d[data], data;}; }' data | sort -n
Code: Alles auswählen
$ awk 'BEGIN { RS = ";|\n"; } { if ("" != $1) print $1; }' data | sort | uniq -c | sort -n
Gruss Cae
--Edit: Vorhin im Chat hatte Colttt einen anderen Pastebin (pastebin.com) angegeben, der wohl die Zeileenden kaputt macht und sie standardmaessig als \r\n ausliefert. Das gibt dann 'ne extra Zaehlzeile fuer \r. Wenn man das nicht will, kann man RS = ";|\n|\r"; verwenden.
Zuletzt geändert von Cae am 28.02.2013 13:56:02, insgesamt 1-mal geändert.
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.
—Bruce Schneier
Re: automatisch wörter zählen
Das mit den beiden Trennern ist nicht schlecht.
Somit sollte das Programm keine Statistiken für leere Felder (Ende Zeile) mehr ausgeben und funktioniert sowohl mit als auch ohne abschließendem Semikolon pro Zeile. Der Wert hinter dem Prozent (%) gibt die Anzahl der Spalten pro Zeile an.
Code: Alles auswählen
awk 'BEGIN {RS=";|\n";} {for (i=1;i<=NF;i++){anz[$i]++} } ; END {for (x in anz){j++; printf x ": " anz[x] " "; if (j%2 == 0) printf"\n"}print }' test.txt
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: automatisch wörter zählen
awk ist doch völlig überflüssig.
cat foo.txt | tr ...
Außerdem ist das hier ein Debian-Forum, Solaris kann keine Anforderung sein.
cat foo.txt | tr ...
Außerdem ist das hier ein Debian-Forum, Solaris kann keine Anforderung sein.
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Re: automatisch wörter zählen
Dein beitrag hier ist völlig überflüssig, da es offensichtlich schon Leute gab, die gerne geholfen haben.Natureshadow hat geschrieben:awk ist doch völlig überflüssig.
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: automatisch wörter zählen
Nachdem er die Lösung schon in dreifacher Ausfertigung im Chat bekommen hatte, ja.CH777 hat geschrieben:Dein beitrag hier ist völlig überflüssig, da es offensichtlich schon Leute gab, die gerne geholfen haben.Natureshadow hat geschrieben:awk ist doch völlig überflüssig.
Außerdem darf man durchaus mehrere Lösungen haben.
Hattest du noch was inhaltliches zu sagen oder wolltest du nur trollen?
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Re: automatisch wörter zählen
Das sehe ich nicht so. Die Pipeline von Natureshadow ist einfach und gut, gescheitert ist der Vorschlag nur daran, dass tr(1) (aus historischen Gruenden leider) keine Dateiargumente akzeptiert sondern nur von stdin liest. Das vergisst man schnell mal weil das eine Abweichung vom ueblichen Schema ist. Leider hat niemand realisiert, dass man einfach nur ein `<' vor den Dateinamen setzen muss um die Pipeline von Natureshadow ans Laufen zu kriegen. (Oder halt mit cat(1) wenn man diese Katze verschwenden will.) Darum ist der Kommentar von Natureshadow keineswegs ueberfluessig sondern, im Gegenteil, sehr notwendig.CH777 hat geschrieben:Dein beitrag hier ist völlig überflüssig, da es offensichtlich schon Leute gab, die gerne geholfen haben.Natureshadow hat geschrieben:awk ist doch völlig überflüssig.
EDIT: Was ist ``der Chat''? ... Ist das eine Parallelwelt zum Forum?
Use ed once in a while!
- Natureshadow
- Beiträge: 2157
- Registriert: 11.08.2007 22:45:28
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Radevormwald
-
Kontaktdaten:
Re: AW: automatisch wörter zählen
Guckst du links im Menü...Meillo hat geschrieben: EDIT: Was ist ``der Chat''? ... Ist das eine Parallelwelt zum Forum?
Linux Professional Institute Certification Level 2
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Warum bist du immer so gehässig? | FAQ (aka "Mein Sound ist kaputt!")
Meine DF.de-Stalker: Cae und TRex - I <3 you!
Re: automatisch wörter zählen
Mehrere Spalten kann man mit pr(1) machen. Um die Ergebnisse in drei Spalten aufzuteilen: `... | pr -t -3'.Colttt hat geschrieben: und kann man es evtl so bei 20 zeilen umbrechen das er dann daneben schreiben??
Use ed once in a while!
Re: automatisch wörter zählen
Cool. Wieder was gelernt. Danke.Mehrere Spalten kann man mit pr(1) machen. Um die Ergebnisse in drei Spalten aufzuteilen: `... | pr -t -3'.