Ich habe eine Datei try.txt
entfernen, die wie folgt aussieht:erste eckige Klammern in jeder Zeile mit dem Inhalt in ihm (bash)
(SOME_PRINT): [a] content
(SOME_PRINT): [a] [b] content
Wenn ich dieses Muster am Anfang einer Zeile in der Datei: (SOME_PRINT): [<word>]
(wo <word>
ist eine Kombination aus Buchstaben und Zahlen nur), so würde ich es mit (OTHER_PRINT):
ersetzen möchten.
Für die Datei oben, würde Ich mag einen Befehl finden, dessen Ausführung die Datei werden machen:
(OTHER_PRINT): content
(OTHER_PRINT): [b] content
Ich versuchte sed -r -i 's/^\(SOME_PRINT\)\: \[.*\] /\(OTHER_PRINT\)\: /' try.txt
, und bekam diese Ausgabe auszuführen:
(OTHER_PRINT): content
(OTHER_PRINT): content
Können Sie erklären, warum [b]
verschwunden ist?
Beachten Sie, dass sed nicht nicht gierig unterstützt, aber wie in den Antworten der doppelten Frage angegeben, können Sie die Problemumgehung in diesem Fall verwenden .. auch können Sie vermeiden, die '()' durch Entfernen der '-r' Option – Sundeep