• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> 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
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Code:
cat [B][COLOR="#0000FF"]"file"[/COLOR][/B] | grep -Eo '@\w+' | sed s,@,,1
 
Zuletzt bearbeitet:

Simulacra

Erdapfel
Registriert
18.11.12
Beiträge
3
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.
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.520
Ersetze mal das file durch den Dateinamen (kompletter Pfad, wenn du nicht schon im gleichen Verzeichnis bist).
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Warum nicht

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

(wozu noch das cat)?
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
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.