Portál AbcLinuxu, 10. května 2025 08:17
sed '/identifikator/s/[^"]*"\([^"]*\)".*/\1/;t;d' soubor
/abc/!<akce>
. Uvnitř reguláru je to obtížnější a řeší se to vypsáním všech možností co tam mohou být, což je pěkná pruda. Vždy je lepší se zamyslet jestli je to skutečně nutné a jestli to náhodou nejde obejít. Jinak ve vimu, grepu a snad i další exituje něco jako negativní hledání.
\([^a]\|a[^b]\|ab[^c]\)
s/=\([^a]\|a[^b]\|ab[^c]\)/;\1/
. Nebo chci nahradit = před nímž nesmí být abc /\([^c]\|[^b]c\|[^a]bc\)=/\1;/
. Zkrátka použít něco se silnějším regexpem je IMHO lepší.
třeba chci najít = za nímž nenásleduje abc a nahradit ho
středníkem, s/=\([^a]\|a[^b]\|ab[^c]\)/;\1/
I to je spatne, protoze to nenahradi = na konci vstupu (radky), ale to je detail. Pavel
Dobes se totiz ptal na doplnek k ^.*abc.*$
, napr jako soucast
vyrazu matchujiciho rovnitko nasledovane posloupnosti znaku neobsahujici abc.
^=(|c|bc)([^a]|a[^b]|ab[^c])*$Pro jednoduchost to je v rozsirenych regularnich vyrazech a predpokladam jedno rovnitko ve vstupu (jinak se do [^ prida rovnitko, pripadne se ty znaky urci jeste restriktivneji /jenom pismena apod/). ^ a $ se nahradi za predchazejici / nasledujici regularni vyraz, pokud to ma byt soucasti nejakeho vetsiho regularniho vyrazu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.