Script-Suche: Anzahl der Zeilen, die mit demselben Wort begi

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Sero
Beiträge: 40
Registriert: 15.09.2005 07:49:23

Script-Suche: Anzahl der Zeilen, die mit demselben Wort begi

Beitrag von Sero » 29.08.2006 11:22:47

Hallo Leute,
sorry bin ein Newbie, und versuche grad über die Kommandozeile die Anzahl der Zeilen in einer Datei zu zählen, die mit demselben Wort beginnen und diese dann nach Häufigkeit geordnet auszugeben. Sorry hab aber keine Ahnung wie ich das machen soll. Ausgabe sollte dann halt so aussehen:

Code: Alles auswählen

$cat text.txt
aaaaa rest rest
ccc rest rest
bbbb rest rest
bbbb rest rest
ccc rest rest
ccc rest rest
$sh script.sh text.txt
1 aaaaa
2 bbbb
3 ccc
hab derzeit folgendes probiert:

Code: Alles auswählen

$cat text.txt | sed 's/[^a-zA-Z]/\n/g' | sort | uniq -c| sort
     12 rest
      1 aaaaa
      2 bbbb
      3 ccc
habe erstmal gleiche Wörter zählen lassen und dann sortiert.
2 Probleme:
1. die Worte die 19mal vorkommen stehen vor denen die 2mal vorkommen
2. Zähle ich ja hier alle vorkommenden Worte, will aber nur Wiederholungen des ersten Wortes pro Zeile zählen.

Hat jemand Lust mir zu helfen?
Tschüss Sebastian

Sero
Beiträge: 40
Registriert: 15.09.2005 07:49:23

Beitrag von Sero » 29.08.2006 14:14:56

Also ich bin jetzt erstmal soweit:

Code: Alles auswählen

$cat text.txt | sed 's/^[ \t]*//' | sed 's/[^a-zA-Z]/\ndelnextmark/g' | sed '/^delnextmark/D' | sort | uniq -c
      1 aaaaa
      2 bbbb
      3 ccc
$_
so jetzt muss also nur noch das sortierproblem ganz am Ende gelöst werden. Irgendwelche Tipps?

Tschüss Sebastian

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.08.2006 14:15:30

Sero hat geschrieben: 2 Probleme:
1. die Worte die 19mal vorkommen stehen vor denen die 2mal vorkommen
dieses Problem kannst du mit "sort -n" lösen
Sero hat geschrieben: 2. Zähle ich ja hier alle vorkommenden Worte, will aber nur Wiederholungen des ersten Wortes pro Zeile zählen.
dann solltest du nur die erste Spalte zählen:

Code: Alles auswählen

awk '{print $1}' text.txt | uniq -c | sort -rn

Sero
Beiträge: 40
Registriert: 15.09.2005 07:49:23

Beitrag von Sero » 29.08.2006 14:20:21

Hey super Danke

Vielleicht sollte ich mal sagen, was ich damit bezwecke:
ich habe ca 2000 mp3s in einem Verzeichnis. Ich möchte nun von den am häufigsten vorkommenden Interpreten Unterverzeichnisse erstellen, und dort deren mp3s verlinken. Tja derzeit bin ich am Skript basteln, aber es funktioniert nicht so richtig.

Tschüss Sebastian

Antworten