Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum>Software>Textdokument: Wörter mit 4 Buchstaben

Textdokument: Wörter mit 4 Buchstaben

Philipp12.05.1013:54
Heyhey,

ich muss aus einem großen Textdokument alle Wörter mit 4-Buchstaben raussuchen, bzw. alle anderen löschen.

Jemand eine Idee, wie sich dies automatisieren ließe?

Gruß!
0

Kommentare

Mr. Krabs
Mr. Krabs12.05.1013:56
Mit regulären Ausdrücken würde ich mal sagen. Ist ne Wissenschaft für sich aber sehr interessant:
„Deux Strudel!“
0
blueMac201012.05.1014:05
Per PHP Skript?
0
h.naumer12.05.1014:29
In der Textverarbeitung Papyrus (MAC) gibt es bei der Suchen/Ersetzen Funktion den 'Joker' für ein beliebiges Zeichen. Man gibt als Suchtext 4 Joker ein und aktiviert die Option 'als Wort' - 'markieren'
Dann werden alle Gruppen aus 4 Zeichen als diskontinuierlicher Block markiert.
Anschließend den Block kopieren oder ausschneiden und in ein neues Dokument einfügen
0
Philipp12.05.1018:27
Papyrus Autor will bei mir nicht starten, hat noch jemand eine andere Idee?

0
Stranger12.05.1018:55
http://www.gskinner.com/RegExr/

Da kannste mit regulären Ausdrücken rumprobieren und basteln. Rechts sind auch die Grundlagen erklärt, mit einbisschen probieren solltest du die passende Kombination für dich finden.
0
_mäuschen
_mäuschen12.05.1019:16

Als Einzeiler:

for w in `less /path_to_document`; do c=`echo "$w" | wc -m`; c=$((c-1)); if (($c==4)); then echo $w >> ~/Desktop/4char_words.txt; fi; done

0
Philipp12.05.1022:21
Das klingt gut bis jetzt, wie heisst so eine Applikation, mit der das anwendbar ist auf dem Mac?

Die Datei ist sehr groß…
0
Philipp14.05.1007:15
Keiner eine Idee?
0
Stucky14.05.1008:46
Sollte mit Textwragnler und regulären Ausdrücken gehen.
Noch besser auf einem Windowsrechner mit Textpad, da gibt es gleich eine gute Hilfe zu den reg. Expressions
0
Metti
Metti14.05.1009:04
Um mal ein Beispiel für einen passenden regulären Ausdruck zu liefern:
\b[a-zA-Z][a-zA-Z][a-zA-Z][a-zA-Z]\b

\b = findet eine Wortgrenze
[a-zA-Z] = findet einen Klein- oder Großbuchstaben von a-z.

Hinzufügen müsstest Du ggf. noch diverse weitere Zeichen wie Umlaute oder ß.
Testen kannst Du das auf der von Stranger genannten Seite oder dem schon erwähnten TextWrangler.

MfG, Metti.
0
MacMark
MacMark14.05.1009:26
Liest hier keiner den Beitrag von _mäuschen?
„@macmark_de“
0
onicon
onicon14.05.1009:39
@MacMark: das erfordert eine gewisse intelligenz. dementsprechend wird der beitrag von den meisten ignoriert.
0
jogoto14.05.1009:56
Vielleicht bezieht sich ja das
Philipp
Das klingt gut bis jetzt, wie heisst so eine Applikation, mit der das anwendbar ist auf dem Mac?

auf _mäuschens Beitrag.

In diesem Fall wäre die Antwort: Terminal
0
Metti
Metti14.05.1009:57
@MacMark
Sicher habe ich den gelesen. Jedoch würde ich erst diverses andere versuchen, bevor ich mich an das Terminal begeben würde. Irgendwie sieht das für mich immer sehr abstrakt aus.

Wenn ich Pech habe, ist das nicht mal ein Terminalbefehl sondern eher ein Apple-Script. So ganz ohne weitere Erklärung würde ich das nicht ausprobieren. Auch wenn es anderen als ein leichter Weg erscheint.

MfG, Metti.
0
MacMark
MacMark14.05.1010:18
Das sind Shell-Befehle. Also im Terminal copy-paste:

for w in `less 

Leerzeichen nach "less" nicht vergessen!

Dann das Dokument ins Terminal ziehen, wodurch der Pfad eingetragen wird.

Dann wieder copy-paste:

`; do c=`echo "$w" | wc -m`; c=$((c-1)); if (($c==4)); then echo $w >> ~/Desktop/4char_words.txt; fi; done

Dann Return und dann hast Du die Wörter in einer Datei auf dem Desktop. Das Original bleibt unverändert.
„@macmark_de“
0
Krypton14.05.1010:40
Mit Mellel geht das auch recht einfach. Hier lassen sich im Suchen-Dialog die regulären Ausdrücke „visuell“ zusammenklicken, was sie für Einsteiger leichter verständlich macht. Da es dennoch etwas Einarbeitungszeit benötigt, rentiert es sich vermutlich nur, wenn man eine solche Aufgabe öfters bewältigen muss.
0
Philipp14.05.1014:35
Toll die Terminal Lösung, danke für die ausführliche Erklärung M & MM und danke an alle anderen für die Programmvorschläge. Musste im Code die 4 durch eine 5 ersetzten sonst wären es immer 3 Buchstaben geworden.
Aber jetzt läuft’s fleißig.

Gruß!
0
_mäuschen
_mäuschen16.05.1000:07

HD:~ me$ IN=/path_to_source
HD:~ me$ OUT=/path_to_dest

HD:~ me$ date; cat "$IN" | tr -cs "[:alpha:]" "\n" | grep '\<....\>' > $OUT; date
Sa 15 Mai 2010 23:49:03 CEST
Sa 15 Mai 2010 23:49:04 CEST

Nüchtern betrachtet ist obiger Befehl massiv schneller
als mein erster Vorschlag



HD:~ me$ date; for w in `less "$IN"`; do c=`echo "$w" | wc -m`; c=$((c-1)); if (($c==4)); then echo $w >> $OUT; fi; done; date
Sa 15 Mai 2010 23:49:25 CEST
Sa 15 Mai 2010 23:51:26 CEST

HD:~ me$ wc -w "$IN"      31108 source.txt
HD:~ me$ wc -w "$OUT"      176 4chars.txt

0
Philipp23.05.1000:25
Jetzt ist’s schon zu spät Habe den ersten Vorschlag genommen und lange gewartet…

Jetzt bräuchte ich noch eine Funktion die alle Wörter die aus Buchstaben des Alphabets sowie + und - bestehen raussucht.

Danke vorab!
0
_mäuschen
_mäuschen23.05.1014:42

HD:~ me$ rm $OUT; date; cat "$IN" | tr -cs "[:graph:]" "\n" | sed 's/[,.:\"\(\)\@\<\>\!0-9]//g' | sed "s/'//g" | grep '\<....\>' > $OUT; date;

So 23 Mai 2010 14:37:32 CEST
So 23 Mai 2010 14:37:37 CEST


HD:~ me$ wc -w $IN $OUT
72036 /Users/me/Desktop/source.txt
14624 /Users/me/Desktop/4char_words.txt
86660 total

0
roan
roan23.05.1016:29
Mich würde brennend interessieren für was man das braucht?
0
Philipp24.05.1002:12
Mmmhm komme mir ein wenig debil vor aber habe nach obiger Erklärung mit drag and drop gearbeitet und dann anstelle von folgendem code:

`; do c=`echo "$w" | wc -m`; c=$((c-1)); if (($c==4)); then echo $w >> ~/Desktop/4char_words.txt; fi; done

das hier eingesetzt:
cat "$IN" | tr -cs "[:graph:]" "\n" | sed 's/[,.:\"\(\)\@\<\>\!0-9]//g' | sed "s/'//g" | grep '\<....\>' > $OUT

Macht aber nichts.
0
_mäuschen
_mäuschen24.05.1009:59

Im Terminal copy-paste:
cat 
Leerzeichen nach "cat" nicht vergessen!

Dann das Dokument ins Terminal ziehen, wodurch der Pfad eingetragen wird.

Zusätzlich ein Leerzeichen.

Dann wieder copy-paste:
| tr -cs "[:graph:]" "\n" | grep "[+-]" | sed 's/[,.:\"\(\)\@\<\>\!0-9]//g' | sed "s/'//g" | sed -e '/-$/d' | sed -n -e '/^[a-zA-Z]/p' > ~/Desktop/result.txt



Sieht dann ungefähr so aus:

color-splotched
pre-select
red-dressed
right-hand
jumping-bunny
non-legal
Self-Preservation
non-aggressive
stair-like
L-shaped
q++q
i--o

0
Philipp24.05.1010:32
Danke dir!

Leider bricht er ab und sagt
tr: Illegal byte sequence

Das hat er bei erstem code auch oft ausgespuckt, hat jedoch danach einfach weitergemacht
0
_mäuschen
_mäuschen24.05.1011:12

Was ist denn der Quelltext?

0
Philipp24.05.1012:48
Der Quelltext ist die 4-Buchstaben-Wortliste die ich oben generiert habe. Vielleicht sollte ich die in ein anderes Format bringen?

Gruß!

0
_mäuschen
_mäuschen24.05.1014:33

Ich mein den Quelltext der zur 4-Buchstaben-Wortliste führte.

0

Kommentieren

Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.