• Wieder einmal haben uns unsere Apfeltalker tolle Fotos zur Abstimmung eingesandt. Welches ist Euer Favorit? Stimmt mit ab! Hier geht es zur Abstimmung --> Klick
  • Es ist bereits Apfeltalk-Tradition und wir möchten sie auch in diesem Jahr fortsetzen: Unser Apfeltalk-Weihnachtslogo-Wettbewerb hat begonnen! Gestaltet für uns das Weihnachtsbanner, das im Monat Dezember bis zum Weihnachtsfest unsere Webseite schmücken soll. Lasst Eurer Kreativität freien Lauf! Hier geht es zum Wettbewerb --> Klick

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.