• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

Mit Grep einen Text filtern

Simulacra

Erdapfel
Registriert
18.11.12
Beiträge
3
Aus einem sehr langen Text sollen per Batch alle @user herausgefiltert werden.
Kennt jemand den Grep Befehl um das per terminal zu machen?

Beispiel:

Quelltext
Der heutige Beitrag wurde von den usern @max @wasa und @heinz erstellt,
bitte richtet eure Fragen direkt an sie.

Ergebnis
max
wasa
heinz
 
Code:
cat [B][COLOR="#0000FF"]"file"[/COLOR][/B] | grep -Eo '@\w+' | sed s,@,,1
 
Zuletzt bearbeitet:
danke Rastafari.Leider klappt das hier nicht, es wird der ganze Text ausgegeben, nicht bloss die usernamen.
Mache ich etwas falsch?
im terminal gebe ich den befehl gefolgt vom pfad zu der text datei ein.
 
Ersetze mal das file durch den Dateinamen (kompletter Pfad, wenn du nicht schon im gleichen Verzeichnis bist).
 
Warum nicht

Code:
grep -Eo '@\w+' "file" | sed s,@,,1

(wozu noch das cat)?
 
Gewohnheitsmässiger Workaround.
Die BSD/OSX Version von grep hat (bzw hatte?) einen nervigen Bug, der bei bestimmten fehlerhaften UTF-Codes in der Datei zu einer Blockade des I/O Puffers führt(e). Das Prog frisst dann nicht nur sämtlichen verfügbaren Speicher auf, es lässt sich auch nicht mehr via Ctrl-C beenden (jedenfalls nicht in akzeptabler Reaktionszeit).
Übernimmt 'cat' oder ein anderes Programm den I/O Puffer und grep bekommt seinen Input über eine Pipe, passiert das nicht.