Mit Sed Wörter Manipulieren

G

garfield.banjo

Grünschnabel
Hallo, ich habe hier ein wahrscheinlich simpeles Problem.
Ich habe eine Textdatei mit einen Fliesstext. In diesem Text sollen nun alle großgeschriebenen Wörter in eckige Klammern gesetzt werden. Aber irgendwie krieg ich das nicht hin. Hab schon das Man gelesen, aber sehe den Wald vor lauter Bäume nicht. Über jede Hilfe wäre ich dankbar. Bisher stehe ich hier:

sed "s/A.*/'[A.*]'/g" 1.txt > 2.txt
Wie sage ich das die Klammern als String benutzt werden soll.
Danke
 
Spontan wuerde ich die escapen:
Code:
sed "s/A.*/'\[A.*\]'/g" 1.txt > 2.txt

/Edit: Allerdings wird der Ausschnitt eh nicht das machen, was du laut deiner Beschreibung haben moechtest...
 
Zuletzt bearbeitet:
Spontan wuerde ich die escapen:
Code:
sed "s/A.*/'\[A.*\]'/g" 1.txt > 2.txt

/Edit: Allerdings wird der Ausschnitt eh nicht das machen, was du laut deiner Beschreibung haben moechtest...

Soweit war ich auch schon, das ändert alle Nomen mit A in '[A.*]'
trozdem danke
 
Hi,

im "zu Ersetzen" Teil braucht man nichts escapen, das ist schliesslich keine RegEx. Aber ich hab auch grad n Brett vorm Kopf, so ganz krieg ich das auch nicht hin, weil sed ja greedy matcht:
Code:
$ echo "foo bar FOOBAR FOO barfoo BAR" | sed 's$.* \([A-Z]*\).*$[\1]$g'
[BAR]
So in die Richtung muss das gehen, jetzt muss man sed nur noch klar machen, dass er nicht greedy matchen soll. Das Problem hatte ich schonmal, keine Ahnung wie ich das damals geloest hab...

Spaetes Edit:
Upps, "zu Ersetzen" muss natuerlich "zu Ersetzen mit" sein, aber ich hoffe das war aus dem Kontext klar. ;)

mfg,
bytepool
 
Zuletzt bearbeitet:
Hi,

im "zu Ersetzen" Teil braucht man nichts escapen, das ist schliesslich keine RegEx. Aber ich hab auch grad n Brett vorm Kopf, so ganz krieg ich das auch nicht hin, weil sed ja greedy matcht:
Code:
$ echo "foo bar FOOBAR FOO barfoo BAR" | sed 's$.* \([A-Z]*\).*$[\1]$g'
[BAR]
So in die Richtung muss das gehen, jetzt muss man sed nur noch klar machen, dass er nicht greedy matchen soll. Das Problem hatte ich schonmal, keine Ahnung wie ich das damals geloest hab...

mfg,
bytepool

Mit diesem Befehl verwandelt er alle Wörter mit A angefangen in []
MfG
bumbum
 
Hi,

kann es sein dass du einfach auf die perfekte Loesung wartest? Hab ich irgendwo geschrieben dass das funktionieren wird? o.O

Edit:
Stimmt, wenn greedy gematcht wird, muss man vor allem mit "not" arbeiten um das Muster zu begrenzen, also "[^A-Z]*". Das dann nur noch gruppieren und in die Ersetzung mit aufnehmen, und das Problem ist geloest.

mfg,
bytepool
 
Zuletzt bearbeitet:

Ähnliche Themen

Leerzeichen, Großbuchstaben, HTML Tags entfernen mittels SED

Zurück
Oben