Portál AbcLinuxu, 11. května 2025 07:16

Dotaz: Chyba v sed skripte

14.9.2009 15:09 pupala | skóre: 21
Chyba v sed skripte
Přečteno: 212×
Odpovědět | Admin
Mám tento skript

sed -i -e "/^config[[:space:]]*openvpn[[:space:]]*custom\_config/,/^config[[:space:]]*openvpn[[:space:]]*sample\_server/ s/[[ :space:]]*option[[:space:]]*enable[[:space::]]0/option\ enable\ 1/" /etc/config/openvpn

V debian-e mi vypíše "neukončený príkaz s" a v busybox sed-e v openwrt "Invalid character class name". Kde robím chybu? Ďakujem
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

14.9.2009 15:21 l4m4
Rozbalit Rozbalit vše Re: Chyba v sed skripte
Odpovědět | | Sbalit | Link | Blokovat | Admin
V [ :space:] je v každém případě navíc mezera.
14.9.2009 18:44 rubicon
Rozbalit Rozbalit vše Re: Chyba v sed skripte
Odpovědět | | Sbalit | Link | Blokovat | Admin

 

 

sed -i -e "/^config[[:space:]]*openvpn[[:space:]]*custom\_config/,/^config[[:space:]]*openvpn[[:space:]]*sample\_server/ s/[[ :space:]]*option[[:space:]]*enable[[:space::]]0/option\ enable\ 1/" /etc/config/openvpn

 

A v téhle třídě máš o jednu dvojtečku navíc. (Tvůj sed vyžaduje eskejpování mezer a podtržítek nebo je tam naopak cíleně máš/vkládáš? "option\ enable\ 1")

 

Jestli je tvým cílem v uvedených řádcích odstranit nadbytečné bílé znaky, tak jsi nepoužil nejelegantnější způsob. Tohle by s přehledem zvládla jednoduchá konstrukce s/[[:space:]]{2,}/ /g. Ovšem pokud by ti nevadila případná počáteční mezera :).

15.9.2009 10:38 pupala | skóre: 21
Rozbalit Rozbalit vše Re: Chyba v sed skripte
Vkladám ich tam. Potrebujem len v riadku "option enable 0" zmeniť na "option enable 1". Len neviem, koľko je kde medzier a horizontálnych tabulátorov, tak medzi to vkladám navovo len po jednej medzere. Ďakujem, tú druhú dvojbodku som si nevšimol.

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.