Portál AbcLinuxu, 10. května 2025 05:05
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.
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
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.
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
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?
Například man regex
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.