Portál AbcLinuxu, 8. května 2025 22:08
Ahoj,
potrebuju udelat par ukolu pomoci sedu (nebo edu) a u nekterych z nich nevim poradne jak na to :(
1) odstranit radky s komentari (znak #), resp. pokud znak # neni na zacatku radku, pak odstranit jenom znaky od # do konce radku (vcetne #)
napadlo me sed soubor -e s/\(#.*\)//, jenomze tento prikaz radek s komentarem neodstrani - zustane prazdny radek
2) odstranit bile znaky pred interpunkci
toto je pro me jeste vetsi zahada - ruzne jsem to zkousel a testoval jak to funguje, ale jedine, ceho jsem dosahl bylo, ze sed vymenil prvni vyskyt mezery v souboru
vymyslel jsem sed soubor -e s/[[:space:]]+\([.,\!?]+\)/\1/, ale to nefunguje vubec
Dekuju Mira
/^#/d
ad 2) přidat na konec volbu g
(viz man)
sed soubor 's/^\([^#]*\)#.*$/\1/'
, mozna ale existuje elegantnejsi reseni, toto je prvni, co me napadlo g
, takze to bude asi ten problem
BTW prikazy pro sed davejte radeji mezi apostrofy, vyhnete se tak problemum
BTW prikazy pro sed davejte radeji mezi apostrofy, vyhnete se tak problemumTato rada je vo vseobecnosti rovnako zla, ako rada opacna. Neraz treba do patternu expandovat nejaku premennu, a vtedy apostrofy pouzit nejdu. Pattern sed-u je jedna vec, expanzia shellu je vec druha. Nanestastie sa tieto dve veci ovplyvnuju, ale nastastie su ortogonalne. Takze ich len treba poznat a pouzivat pripad od pripadu podla potreby. Subjektivne uznavam, ze pripadov kedy apostrofy pouzit idu - a teda umoznuju vyhnut sa shell escapovaniu - je viac, ako ked pouzit nejdu.
Diky,
uz to funguje perfektne :)
K uvozovkam - puvodne jsem je tam mel, ale (asi) shell je odstranil, kdyz jsem si ty prikazy echoval do souboru.
Mira
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.