sed Ersetzen Sie nur Zeilen durch übereinstimmende Gruppen

7

Derzeit habe ich diesen Befehl:

sed 's/\([^C]*\)/\1AB/'

Es fügt "AB" vor der ersten Instanz von "C" in eine Zeile ein. Es wird aber auch "AB" am Ende jeder Zeile ohne "C" hinzugefügt.

Wie kann ich es nur bearbeiten lassen, wenn es "C" findet?

Sepero
quelle

Antworten:

5

Was ist falsch daran, das einfach zu ersetzen C?

sed 's/C/ABC/'

Dies ersetzt nur die erste Instanz (wenn Sie alle ersetzen möchten, fügen Sie sie gam Ende hinzu).

Graeme
quelle
4

Sie benötigen einen Adressfilter:

sed '/C/s/\([^C]*\)/\1AB/'
Hauke ​​Laging
quelle