Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
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
Philipp
12.05.10
13: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ß!
Hilfreich?
0
Kommentare
Mr. Krabs
12.05.10
13:56
Mit regulären Ausdrücken würde ich mal sagen. Ist ne Wissenschaft für sich aber sehr interessant:
„Deux Strudel!“
Hilfreich?
0
blueMac2010
12.05.10
14:05
Per PHP Skript?
Hilfreich?
0
h.naumer
12.05.10
14: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
Hilfreich?
0
Philipp
12.05.10
18:27
Papyrus Autor will bei mir nicht starten, hat noch jemand eine andere Idee?
Hilfreich?
0
Stranger
12.05.10
18: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.
Hilfreich?
0
_mäuschen
12.05.10
19: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
Hilfreich?
0
Philipp
12.05.10
22:21
Das klingt gut bis jetzt, wie heisst so eine Applikation, mit der das anwendbar ist auf dem Mac?
Die Datei ist sehr groß…
Hilfreich?
0
Philipp
14.05.10
07:15
Keiner eine Idee?
Hilfreich?
0
Stucky
14.05.10
08: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
Hilfreich?
0
Metti
14.05.10
09: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.
Hilfreich?
0
MacMark
14.05.10
09:26
Liest hier keiner den Beitrag von _mäuschen?
„@macmark_de“
Hilfreich?
0
onicon
14.05.10
09:39
@MacMark: das erfordert eine gewisse intelligenz. dementsprechend wird der beitrag von den meisten ignoriert.
Hilfreich?
0
jogoto
14.05.10
09: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
Hilfreich?
0
Metti
14.05.10
09: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.
Hilfreich?
0
MacMark
14.05.10
10: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“
Hilfreich?
0
Krypton
14.05.10
10: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.
Hilfreich?
0
Philipp
14.05.10
14: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ß!
Hilfreich?
0
_mäuschen
16.05.10
00: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
Hilfreich?
0
Philipp
23.05.10
00: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!
Hilfreich?
0
_mäuschen
23.05.10
14: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
Hilfreich?
0
roan
23.05.10
16:29
Mich würde brennend interessieren für was man das braucht?
Hilfreich?
0
Philipp
24.05.10
02: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.
Hilfreich?
0
_mäuschen
24.05.10
09: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
Hilfreich?
0
Philipp
24.05.10
10: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
Hilfreich?
0
_mäuschen
24.05.10
11:12
Was ist denn der Quelltext?
Hilfreich?
0
Philipp
24.05.10
12:48
Der Quelltext ist die 4-Buchstaben-Wortliste die ich oben generiert habe. Vielleicht sollte ich die in ein anderes Format bringen?
Gruß!
Hilfreich?
0
_mäuschen
24.05.10
14:33
Ich mein den Quelltext der zur 4-Buchstaben-Wortliste führte.
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.