Fórum Root.cz

Hlavní témata => Vývoj => Téma založeno: vesterna12 18. 03. 2023, 09:55:43

Název: Řětězec obsahující & a sed regulární výraz
Přispěvatel: vesterna12 18. 03. 2023, 09:55:43
Zdravím,
jak správně zapsat v sedu výraz pro substituci řetězce, který v libovolné pozici může obsahovat '&'?
Jde o část skriptu, které není předem známo co bude čím nahrazovat.
Nový řetězec může obsahovat také znak &.
Název: Re:Řětězec obsahující & a sed regulární výraz
Přispěvatel: pangolin 18. 03. 2023, 13:14:23
A v čem konkrétně ti to nefunguje?

Na levé straně substituce nemá ampersand speciální význam, na pravé straně musí být "oescapován".

Kód: [Vybrat]
$ echo "a&b&c" | sed "s/a&/bar\&bar/"
bar&barb&c
Název: Re:Řětězec obsahující & a sed regulární výraz
Přispěvatel: vesterna12 18. 03. 2023, 13:37:28
Pokud je vstupem dávka tak tam předem není skriptu známo na jaké pozici se znak nachází
Název: Re:Řětězec obsahující & a sed regulární výraz
Přispěvatel: pangolin 18. 03. 2023, 15:59:34
Z toho porád není jasné, co potřebuješ tím sed-em dosáhnout.

Chceš nahradit libovolný řetězec obsahující & (na libovolné pozici) za něco jiného?
Název: Re:Řětězec obsahující & a sed regulární výraz
Přispěvatel: mikrom 18. 03. 2023, 17:29:10
@vesterna12: daj sem nejaky priklad co je na vstupe  a co ocakavas na vystupe
Název: Re:Řětězec obsahující & a sed regulární výraz
Přispěvatel: mikrom 18. 03. 2023, 18:21:03
Kód: [Vybrat]
$ echo "&xy x&y xy& x & y" | sed "s/\S*&\S*/NAHRADA_ZA_\&/g"nahradi
Kód: [Vybrat]
&xy x&y xy& x & yza
Kód: [Vybrat]
NAHRADA_ZA_& NAHRADA_ZA_& NAHRADA_ZA_& x NAHRADA_ZA_& y