Portál AbcLinuxu, 8. května 2024 05:42


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

Diskuse byla administrátory uzamčena.

17.2.2010 00:31 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Nevím, jestli jsem to jen nepřehledl, ale určitě stojí za zvýrazněné zdůraznění, že

sed 's/neco/cosi' <soubor >soubor

nebo

cat soubor | sed 's/neco/cosi' >soubor

je spatně a může mít za následek poměrně infarktovou situaci :-) V článku je zmíněn přepínač -i, ale mám pocit, že tohle stojí za vypíchnutí. Shell totiž nejdříve zmastí výstupní soubor, aby do něj mohl zapisovat, a pok už nemá, co by do něj zapisoval :-)
17.2.2010 06:03 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Stačí malý trik
(rm soubor; sed 's/neco/cosi' >soubor) <soubor
In Ada the typical infinite loop would normally be terminated by detonation.
17.2.2010 10:18 pet
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Uf..., tohle jsem neznal, to se bude hodit, uz mockrat jsem to slozite obchazel, diky ;-)
17.2.2010 12:36 Fill | skóre: 19 | blog: Fill | Třebíč
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
A ještě se v tom triku nesmí udělat chybička s chybějícím "/" na konci, jinak jsou data v tahu taktéž :).
$ echo neco > soubor
$ (rm soubor; sed 's/neco/cosi' >soubor) < soubor 
sed: -e expression #1, char 11: unterminated `s' command
$ l soubor 
-rw-r--r-- 1 user users 0 2010-02-17 12:32 soubor
$ echo neco > soubor 
$ (rm soubor; sed 's/neco/cosi/' >soubor) < soubor 
$ cat soubor 
cosi
17.2.2010 13:24 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Proti selhání zapisovacího procesu není odolná žádná metoda "in place" editování.
In Ada the typical infinite loop would normally be terminated by detonation.
17.2.2010 14:23 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
       -i[SUFFIX], --in-place[=SUFFIX]

              edit files in place (makes backup if extension supplied)


If you understand, things are just as they are; if you do not understand, things are just as they are.
17.2.2010 17:30 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
To už ale není "in place".
In Ada the typical infinite loop would normally be terminated by detonation.
17.2.2010 06:59 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Jak říkáš, tohle je vlastnost shellu, ne sedu a už jsem to zmiňoval v jednom z minulých dílů (u sortu).
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
17.2.2010 06:20 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Pochopitelně zde nebudu rozebírat veškeré možnosti, protože to by vydalo na pěkně dlouhý specializovaný seriál. Zabývat se budu pouze možnostmi nahrazování textu.
Přimlouval bych se za výčet i ostatních příkazů než jen "s". Řada lidí umí sedem jen substituovat a na složitější věci buď neví jak nebo volají těžkou techniku. Přitom sed umí prakticky cokoliv. A na dlouhý seriál to není, maximálně na jeden díl. V dnešním díle jste se zabýval spíše regulárními výrazy než sedem.
In Ada the typical infinite loop would normally be terminated by detonation.
17.2.2010 14:27 Miroslav Puda
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
btw. CPress: Awk & Sed.
17.2.2010 14:39 Jakub Lucký | skóre: 40 | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Ta knížka mi nepřijde moc dobrá... Mám ji doma, ale blbě se čte, ještě hůř se v ní hledá, občas je to dost kryptické...
If you understand, things are just as they are; if you do not understand, things are just as they are.
17.2.2010 21:27 imploder | skóre: 11
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Mám ji půjčenou, souhlasím, že je místy nejasná, i když celkem to jde. Těžko říct jak je to s kvalitou překladu (originál neznám), překladateli na jednom místě nedošlo, že AWK neumí automaticky skloňovat :)
23.2.2010 23:50 honza
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Mě velmi vyhovovala kniha sed & awk (O'Reilly), je tam vše velmi přehledně a navíc poměrně čtivě :) - navíc google je plný odkazů na html verze této knihy.
17.2.2010 15:26 Robo
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
sed -r -e "s/([0-9]+)/[\1]/g"
bacha na -r; to nie je standartny prepinac; zatvorky "(" je potrebne escape-ovat, t.j. "\)"
17.2.2010 15:40 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Jo, -r zmiňuju jako rozšíření GNU. Bez něj to bere zákl. reg. výrazy (BRE = basic regular expressions) a jak správně říkáš, tam je třeba escapovat.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
19.2.2010 09:12 Robo
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
no bolo by lepsie, keby si pouzival v prikladoch standartne veci a az potom sa zmienoval o rozsireniach GNU (nazov clanku je unixove nastroje); takto sa zaciatocnik nauci veci, ktore potom na unixoch nebudu fungovat, kdezto ked sa nauci najskor standartne veci, tak tie budu fungovat vsade a bude to mat jednoduchsie; tento clanok by som zaciatocnikom v ziadnom pripade nedoporucoval
19.2.2010 12:53 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Tak to dělám ;-) Stačí číst pořádně.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
19.2.2010 16:18 Robo
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
GNU verze sedu se liší v mnoha ohledech. Dodržuje standard, ale implementuje další věci, z nichž mezi nejdůležitější patří přepínač -i (editace „na místě“) a podpora regulárních výrazů (i rozšířených, pomocí -r).
toto je klamliva veta, regularne vyrazu podporuje aj samotny sed bez GNU rozsireni, takisto aj referencie (s escapovanymi zatvorkami ;-)); cize vsetko co sa nachadza pod touto citovanou vetou je pre kazdeho kto sa chce ucit sed zavadzajuce
22.2.2010 08:43 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Unixové nástroje – 9 (sed – nahrazování textu)
Přepínač -r povolí rozšířené regulární výrazy, což umožní např. [0-9]+.

Jen doplním: Bez -r, je potřeba plus escapovat (hvězdičku ne). [0-9]\+.

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

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