Portál AbcLinuxu, 15. listopadu 2025 07:30
Řešení dotazu:
$ cat foo 12234566 0.0987 $ sed -r 's#^[[:digit:]]+$#<span class="int">\0</span>#' foo <span class="int">12234566</span> 0.0987 $ sed -r 's#^[[:digit:]]*\.[[:digit:]]+$#<span class="real">\0</span>#' foo 12234566 <span class="real">0.0987</span>
s/regexp/replacement/misto lomitek jako oddelovace jsem pouzil #, protoze se mi to hodi abych nemusel "escapovat" lomitko v "replacementu".
^[[:digit:]]+$, coz znamena ze to matchne ty radky, ktere od zacatku az do konce obsahuji 1-n znaku tridy [:digit:].<span class="int">\0/span>, tedy nahradi to presne timto, s tim ze misto \0 bude pouzit cely matchnuty radek. V druhem pripade je to velmi podobne, az na to ze regexp je trochu slozitejsi:
^[[:digit:]]*\.[[:digit:]]+$
#123.456# #321# ...čímž se čísla jednoznačně vymezí (jsou jasné začátky a konce), a pak se jednotlivé případy převedou různými regulárními výrazy, které budou matchovat i ty značky
s/#([0-9]*.[0-9]+)#/.../g s/#([0-9]+)#/.../g ...Třetí možnost je napsat regulární výrazy, které zpracovávají i okolní znaky, a případně je nezmeněné vracejí do streamu:
s/(^|[^.0-9])([0-9]+)([^.0-9]|$)/\1<<\2>>\3/gcož je ale opět rychle komplikuje.
jinak už jsem na to přišel :
s/([0-9]*[\.][0-9]*)/ < span...
btw, proč mi to nechce vypsat span? či jak ho tu mám dát, v code ani v citaci mě to nepustí
[[:lower:]], [[:upper:]] a [[:alpha:]], případně v kombinaci s LC_CTYPE=C.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.