• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> 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.