Řětězec obsahující & a sed regulární výraz

vesterna12

  • ***
  • 122
  • byrokracie zabíjí kreativitu
    • Zobrazit profil
    • E-mail
Řětězec obsahující & a sed regulární výraz
« kdy: 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 &.


Re:Řětězec obsahující & a sed regulární výraz
« Odpověď #1 kdy: 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

vesterna12

  • ***
  • 122
  • byrokracie zabíjí kreativitu
    • Zobrazit profil
    • E-mail
Re:Řětězec obsahující & a sed regulární výraz
« Odpověď #2 kdy: 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í

Re:Řětězec obsahující & a sed regulární výraz
« Odpověď #3 kdy: 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?

mikrom

  • ****
  • 321
    • Zobrazit profil
    • E-mail
Re:Řětězec obsahující & a sed regulární výraz
« Odpověď #4 kdy: 18. 03. 2023, 17:29:10 »
@vesterna12: daj sem nejaky priklad co je na vstupe  a co ocakavas na vystupe


mikrom

  • ****
  • 321
    • Zobrazit profil
    • E-mail
Re:Řětězec obsahující & a sed regulární výraz
« Odpověď #5 kdy: 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