Portál AbcLinuxu, 10. května 2025 05:05

Dotaz: Sed a odescapovanie . v FQDN

13.12.2008 14:51 pupala | skóre: 21
Sed a odescapovanie . v FQDN
Přečteno: 280×
Odpovědět | Admin

Mam subor s priradenymi sietami k FQDN.

cat priradene

    gw1.pokus.test=192.168.1.0

    gw2.pokus.test=192.168.2.0

V skripte priradujem FQDN premennej MENO

Chcem pri zruseni site pouzit pre zachovanie riadku nieco ako

sed -n -i -e 's/$MENO/volna/' priradene

a malo by zostat

   volna=192.168.1.0

   gw2.pokus.test=192.168.2.0

lenze tato konstrukcia mi vymaze obsah celeho suboru.

Je to zrejme tym, ze nie su odescapovane "." . Je to mozne nejako pouzit, alebo musim rozparsovat FQDN

a nasledne regexp vyskladat v sed skripte?

Stylom sed -n -i -e 's/$HOST\.$DOMENA\.test/bla.bla.bla/' priradene ? Pouzil som v sed aj volbu -r, ale bez uspechu.

 

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.12.2008 01:43 luky
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN
Odpovědět | | Sbalit | Link | Blokovat | Admin

Prázdný výstup (soubor) způsobuje volba -n, ale escapnout ten text by to taky chtělo. Viděl bych to třeba nějak takhle:

ESCAPED=$( echo "$MENO" | sed 's/[]^$&.*/[]/\\\0/g' ) # snad vsechno
sed -i -e "s/^$ESCAPED=/volna=/" priradene
14.12.2008 09:17 q
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN
's/[]^$&.*/\\[]/\\\0/g' ?
14.12.2008 11:25 pupala | skóre: 21
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN

 

Díky obom, sedím tu za knihou awk&sed a to čo ste mi napísali neviem ani prečítať. V skripte od q sa kde rozvinie premenná $MENO?

Alebo sed skript od q len opravuje ten predchádzajúci od Lukyho?

Mohol by som poprosiť o vysvetlenie? A ktoré lomítko oddeľuje vzor od striedajúceho výrazu? Vyzerá to na druhé, lebo keby nie, muselo by aj to byť odescapované,

ale potom tretie lomítko prečo nie je odescapované. Pomôžte mi to prečítať. Sám v tom už dlho tápam. Jednoduché výrazy mi už aj idú, ale takéto ešte nie.

 

14.12.2008 18:04 luky
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN

Ano, skript od "q" jen opravuje ten můj tím, že escapuje i zpětné lomítko, na které jsem zapomněl. K vysvětlení asi tolik, že uvnitř [...] většina speciálních znaků ztrácí speciální význam, takže je nečtěte jako speciální :-)

s/
  [
   ]^$&.*/\\[
  ]
 /
  \\\0
 /g
15.12.2008 11:08 pupala | skóre: 21
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN

Z akej literatúry ste toto čerpali?  Mezi prvou [ a druhou ] znaky   ]^$&.*/\\[ nemajú špeciálny význam ?

Neviem sa dopracovať k prečítaniu.

Ani cez info sed ani v knihe awk&sed ani na root.cz v článku Regulárne výrazy od Pavla Satrapu.  & zastupuje aký znak?

15.12.2008 15:19 luky
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN

Například man regex

18.12.2008 21:42 pupala | skóre: 21
Rozbalit Rozbalit vše Re: Sed a odescapovanie . v FQDN
Ďakujem. Toto som nejako nenašiel. Aj keď to ešte neviem na sto percent, začína "svitať".
Z tohoto ]^$&.*/\\[ mi nie je jasné, prečo escapujeme $ a &.
Ak je $ v FQDN, toto escapovanie ho vymaže, a ak sa snažíme priradiť premennej MENO hodnotu v ktorej je &,
tak sa systém snaží interpretovať to ako príkaz na pozadí. Alebo má kombinácia $& predsa nejaký špeciálny význam v [].
A ešte neviem čo vo výraze čo značí 0. Predpokladal som, že "každý výskyt". Ale ak to zmením na iné číslo,
tak to hodí chybu.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.