2016-06-21 2 views
1

Gibt es eine Möglichkeit, testThatMy zu thatMy mit dem Terminal zu konvertieren?Terminal File ersetzen testA mit einem

Das ist, was ich habe jetzt:

sed -i 's/test//g' MyJavaFile.java

Das einzige, was fehlt, den Charakter nach test jetzt Fall zu senken, zu konvertieren wäre.

Auch aus irgendeinem Grund scheint die Bezugnahme auf eine Regex-Variable nicht zu funktionieren.

sed -i 's/test([A-Z]{1})/\1/g' MyJavaFile.java

Antwort

1

Sie die folgenden GNU sed Befehl verwenden können:

sed -r 's/test([[:upper:]])([^[:space:]]*)/\L\1\2/g' file.java 

Für anstelle der Bearbeitung Sie -i müssen passieren, aber ich würde testen Sie den Befehl zuerst.

Muster Erläuterung:

  • -r ermöglicht erweiterte POSIX reguläre Ausdrücke.
  • [[:upper:]] entspricht einem Großbuchstaben
  • [^[:space:]]* Matches null oder mehr nicht Leerzeichen

Replacement Erläuterung:

  • \L verwandeln den folgenden Ausdruck in Großbuchstaben. \1 ist die erste erfassende Gruppe des Inhalts. \2 ist der Inhalt der zweiten Erfassungsgruppe.
+0

Danke. Obwohl ich es zu 's/test ändern musste ([[::]:)] [^ [: space:]] *)/\ L \ 1/g'' – Niklas

+0

Uh mein Fehler! Ich habe es so geändert, wie ich es mir vorgestellt habe. – hek2mgl

Verwandte Themen