In vi, für LinieGibt es einen Standard für den Kontextaustausch?
aaaj
ich den Befehl:
.s/a * \ | j/x/g
Die Linie wendet sich an
xj
statt der erwarteten
xx
Ist das ein Fehler von vi? sed, gaffen und nawk wie erwartet verhalten, zum Beispiel:
% echo aaaj | awk '{gsub(/a*|j/,"x");print}'
xx
Auch, wenn anstelle des Befehls oben ich den Befehl
· s/j \ laufen | a */x/g
("j" und "a *" ausgetauscht), dann würde die Zeile wie erwartet "xx" werden.
Regex hat verschiedene Geschmacksrichtungen, siehe vi Dokumentation, um zu erfahren, wie Regex dort implementiert wird. –
"Siehe Dokumentation" ist die Antwort auf fast jede Frage in Stackoverflow. Wenn ich es in einer Dokumentation finden könnte, würde ich natürlich nicht fragen. – user31264
Theoretisch sollte es sowohl "a *" als auch "j" ersetzen, da DFA für "a * \ | j" und "j \ | a *" dasselbe ist. Deine Frage ist gut. Da meine Antwort das ursprüngliche Problem nicht beantwortet, habe ich es entfernt. – doptimusprime