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

Dotaz: nahrazeni textu v souboru

5.1.2008 19:43 t
nahrazeni textu v souboru
Přečteno: 548×
Odpovědět | Admin
Ahoj, potrebuju pomoct s nahrazenim textu v souboru. Mam nasledujici soubor:
# cat /etc/apt/sources.list

deb http://ftp.cz.debian.org/debian/ etch main
a ja bych potreboval nahradit radek deb http://ftp.cz.debian.org/debian/ etch main za deb-src http://security.debian.org/ etch/updates main contrib. Zkousel jsem to pres sed ale porad to nejde :-( Zadavam to ve tvaru sed 's/puvodni/novy/g' < vstup >vystup. Vzdy to skonci chybou:
# sed 's/deb http://ftp.cz.debian.org/debian/ etch main/deb-src http://security.debian.org/ etch/updates main contrib/g' < sources.list >sources.modified
sed: -e výraz #1, znak 14: unknown option to `s'
# 
Pokud nekdo vite jak to nahradit tak prosim poradte.
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

elenril avatar 5.1.2008 19:53 elenril | skóre: 21 | blog: Raziel
Rozbalit Rozbalit vše Re: nahrazeni textu v souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Musíš escapovat všechny lomítka přes backslash nebo použít jako separator jiný znak, jinak sed nepozná, co je oddělovač a co součást textu.

Ale není mi nějak jasné, proč to chceš dělat přes sed, přijde mi to jako overkill. Není to jednodušší přepsat ručně?
5.1.2008 19:54 dada
Rozbalit Rozbalit vše Re: nahrazeni textu v souboru
Odpovědět | | Sbalit | Link | Blokovat | Admin
Podle me tomu vadi ty / v nahrazovanych strinzich, protoze ono si to mysli: puvodni=deb http:, novy='' a zbytek jsou optiony. Tato neprijemnost se obvykle resi pomoci "escape znaku" tedy tim, ze se pred patricne / da \:

sed -s '/xx\/xx/yy\/yy/'

Hruza co?
6.1.2008 10:39 pavel
Rozbalit Rozbalit vše Re: nahrazeni textu v souboru
sed 's/deb http:\/\/ftp.cz.debian.org\/debian\/ etch main/deb-src http:\/\/security.debian.org\/ etch\/updates main contrib/'
6.1.2008 13:48 Dramon | skóre: 14
Rozbalit Rozbalit vše Re: nahrazeni textu v souboru
A nebo lze použít feature, že místo lomítka se dá pro "s" použít cokoliv a člověk pak nemusí escapovat jako blázen. V tomto případě je místo lomítka zavináč:

sed -i'~' -re "s@deb http://ftp.cz.debian.org/debian/ etch main@deb-src http://security.debian.org/ etch/updates main contrib@g" sources.list

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.