Portál AbcLinuxu, 1. června 2025 03:00


Dotaz: sed vložit obsah promene

3.11.2009 20:43 Jcas | skóre: 19 | blog: linux v rukou ...
sed vložit obsah promene
Přečteno: 159×
Odpovědět | Admin
Poprosim, jestli mi nekdo může přímo napsat příkaz, protože zkouším a zkouším a asi se z těch apostrofů a uvozovek zblázním.

Mám soubor *.sh (bash script) a v něm se vygenereju proměná (x).

Druhý soubor spust.conf do kterého už ta proměná x byla jednou vložena. To se mi povedlo nějak takto:
sed -i '/##/{G;s/$/'x="\"$x\""'/;}' ~/spust.conf

A nyní potřebuji aby se v tomoto souboru přepsala na novou hodnotu.

Pro správnou funkčnost musím vycházet z toho, že nevím jakou hodnotu si ten script pro $x vygeneroval. To ví pouze ten script.

Takže nemohu použít přímý řetězec, ale pouze se odkazovat na hodnotu proměné.

Takže potřebuji- Smaž hodnotu proměné x v souboru spust.conf a nahrad ji novou hodnotou, kterou jsis pred chvílí pomocí funkce vygeneroval. A zapis ji opet v uvozovkách, aby byla pouzitelná. Žádne x=hodnota, ale x="hodnota".

Jestli to umí někdo líp, tak na progr. sed netrvám.

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

Odpovědi

3.11.2009 21:22 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: sed vložit obsah promene
Odpovědět | | Sbalit | Link | Blokovat | Admin
Co třeba takhle?

sed -i "s/x=\"[^\"]*\"/x=\"$x\"/" ~/spust.conf
3.11.2009 22:03 Jcas | skóre: 19 | blog: linux v rukou ...
Rozbalit Rozbalit vše Re: sed vložit obsah promene
Bezva děkuji Mohu poprosit o vysvětlení této části:
x=\"[^\"]*\"
hlavně teda
[^\"]*
3.11.2009 22:20 Ash | skóre: 53
Rozbalit Rozbalit vše Re: sed vložit obsah promene
Posloupnost 0 až N znaků neúvozovka, často používáno mezi úvozovkami místo .* a spoléhání na žravost neboť to je rychlejší.
3.11.2009 22:23 Ash | skóre: 53
Rozbalit Rozbalit vše Re: sed vložit obsah promene
s/neboť to je rychlejší/neboť to je objektivně rychlejší a subjektivně přehlednější/
3.11.2009 22:22 12345 | skóre: 41 | blog:
Rozbalit Rozbalit vše Re: sed vložit obsah promene
Ta zpětná lomítka si můžeš odmyslet, jsou tam kvůli bashi. Vzoru [^"]* vyhovuje libovolně dlouhá posloupnost jakýchkoli znaků kromě ". Takže vzoru x="[^"]*" vyhovují všechny řetězce x="cokoli".

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.