tak me napadlo, jestli by jste mi ten vyraz nemohli trocha popsat??
co se týká sedu tak
cat test | sed "s/a/b/"
ve výstupu nahradí písmena "a" za písmena "b"
a nebo
cat test | sed "s/a//"
nahradí písmena "a" za "nic"
teď k tomu našemu:
cat test | sed "s/\"[^\"]*\$//;s/^[^\"]*\"//"
klidně by se to dalo napsat jako
cat test | sed "s/\"[^\"]*\$//" | sed "s/^[^\"]*\"//"
dělá dvě věci
1) nahrazuje konec řetězce za "nic" - s/\"[^\"]*\$//
2) nahrazuje začátek řetězce za "nic" - s/^[^\"]*\"//
trochu to vyčistím -
pro sed je tam vlastně s/conahrazuji/zaconahrazuji - zajímá nás část conahrazuji, tedy
1)
\"[^\"]*\$ - to je jenom pro sed oescapované:
"[^"]*$ - tedy najdu sekvenci začínající
" pokračující libovolným počtem
* předcházejícího výrazu, tedy čehokoliv jiného než uvozovek
[^"] na konci řádku
$ a to nahradím ničím // (ale to už je část která patří sed)
Zkrátka odstraním od posledních uvozovek (včetně) všechno do konce řádku
2)
^[^\"]*\" - to je jenom pro sed oescapované:
^[^"]*" - tedy od začátku řádku
^ opět najdu sekvenci obsahující libovolný počet neuvozovek
[^"]* končící uvozovkou
" a nahradím to ničím //
Kdybych chtěl jenom matchnout řetězec začínající uvozovkami a lomítkem a končící uvozovkami tak bych použil regexp
"/[^"]*"
, zkuste si nad tím test souborem
egrep -o "\"/[^\"]*\"" test
ale chtěl jste to v sedu.
jinak tady na fóru v tipy, triky napsal nettezzaumana pár hezkých příkladů. (a další užitečný zdroj je dokumentace k
AIX od IBM na jejich webu - vyhledejte třeba regexp)