Ich muss alle Vorkommen von „Punktstern“ ersetzen, wie hier gezeigt:
blah blah .*:.*:.* blah blah
mit:
[0-9][0-9]:[0-9][0-9]:[0-9][0-9]
, sodass das Endergebnis folgendermaßen aussieht:
blah blah [0-9][0-9]:[0-9][0-9]:[0-9][0-9] blah blah
Ich habe verschiedene Varianten der folgenden ausprobiert, aber es hat nicht funktioniert:
%s_ .*:.*:.* _ [0-9][0-9]:[0-9][0-9]:[0-9][0-9] _g
Antwort
Sie haben ein Beispiel für eine Zeile mit einem dreimal wiederholten „Sternchen“ angegeben, die durch Doppelpunkte getrennt sind. Wenn Ihre Daten immer so aussehen, können Sie sich auch an AlexPs Antwort . In Ihrer Frage heißt es jedoch , dass Sie alle Vorkommen von „Punkt-Sternchen“ ersetzen müssen. Wenn diese Anweisung von Wenn das Problem korrekt ist, sollten Sie
:%s/\.\*/[0-9][0-9]/g
verwenden, um das „Sternchen“ zu finden und zu ersetzen, auch wenn es nicht in Dreiergruppen angezeigt wird.
Antwort
Für Vim:
Für sed
: sed -e "s/\.\*:\.\*:\.\*/[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/g"
.
-
%
bedeutet, dass die Ersetzung auf alle Zeilen angewendet wird. wird insed
nicht benötigt, wo der Befehl standardmäßig auf alle Zeilen angewendet wird. -
\.
ist ein Punkt; Ein nacktes.
bedeutet ein beliebiges Zeichen. -
\*
ist ein Sternchen. Ein nacktes*
bedeutet 0 oder mehr des vorhergehenden Atoms.
Antwort
Verwenden des Modifikators nomagic
für das Muster in Vim:
:%s/\M.*/[0-9][0-9]/g
Die \M
entfernt die Besonderheit von .
und *
im Muster.
Siehe :help magic
in Vim.