Czy można rekurencyjnie zastępować wystąpienia sekwencji znaków bez powtarzania tej samej sekwencji?
Wykonując sed
jak w poniższych scenariuszach, mogę uzyskać wspomniane dane wyjściowe.
$ echo XX | sed -e 's/XX/XoX/g'
XoX
$ echo XXX | sed -e 's/XX/XoX/g'
XoXX
$ echo XXXX | sed -e 's/XX/XoX/g'
XoXXoX
Jednak oczekuję, że dane wyjściowe będą wyglądać następująco.
Wejście:
XX
XXX
XXXX
Oczekiwany wynik:
XoX
XoXoX
XoXoXoX
Czy możliwe jest osiągnięcie oczekiwanego zachowania przy pomocy samego seda?
X
i nic więcej. Oba rozwiązania zawodzą, jeśli obecne są inne postacie ...X
przez.
. Proszę zobaczyć edycję.Sprawdziłem, czy jest jakaś flaga, aby tak się stało.
Nawet jeśli takie zachowanie istniało, będzie to bardzo pochłaniać zasoby.
Jednak w tym konkretnym przypadku użycia wyrażenie może mieć tylko dwa razy wyrażenie i osiągnąć wymaganą funkcjonalność. tj. z 2 powtarzającymi się
sed
wyrażeniami.źródło