
Unsere Eingabe sieht ungefähr so aus:
2012-04-17 [GBPGBP]
2012-04-13 [GBP GBP]
2012-04-13 [GBP]
2012-04-11 [GBPGBP]
2012-04-11 [GBP GBP]
2012-04-10 [GBPGBP]
2012-04-06 [GBP GBP GBP]
2012-04-17 [GBPGBP]
2012-04-13 [GBP CDN]
2012-04-13 [GBP]
2012-04-11 [GBPCDN]
2012-04-11 [GBP DL DL]
2012-04-10 [PSGBP]
2012-04-06 [PS PS]
Und wir möchten eine Ausgabe wie
2012-04-17 [GBP]
2012-04-13 [GBP]
2012-04-13 [GBP]
2012-04-11 [GBP]
2012-04-11 [GBP]
2012-04-10 [GBP]
2012-04-06 [GBP]
2012-04-17 [GBP]
2012-04-13 [GBP CDN]
2012-04-13 [GBP]
2012-04-11 [GBPCDN]
2012-04-11 [GBP DL]
2012-04-10 [PSGBP]
2012-04-06 [PS]
Löschen Sie grundsätzlich alle wiederholten Zeichenfolgen innerhalb der Klammern. Irgendwelche Vorschläge?
Antwort1
sed -e ': a' -e 's/\(\[[^][]*\)\([A-Z][A-Z][A-Z]*\)\([^][]*\)\2/\1\2\3/' -e 't a'
: a
setzt ein Label an den Anfang des Skripts.s/\(wibble\)\(foo\)\(bar\)\2/\1\2\3/
ersetzt wibblefoobarfoo durch wibblefoobar.[A-Z][A-Z][A-Z]*
stimmt mit zwei oder mehr Buchstaben übereint a
kehrt zum Label zurücka
, wenn der vorheriges
Befehl eine Ersetzung vorgenommen hat.