Portál AbcLinuxu, 11. května 2025 04:29
\e[1;30mblabla\e[0m - \e[1;31mblabla\e[0m - \e[1;32mblabla\e[0m - \e[1;33mblabla\e[0ma potřebuji zjistit počet znaků včetně mezer, jenže potřebuji spočítat pouze tyto znaky bez těch sraček okolo...
blabla - blabla - blabla - blablaporadí někdo jednoduché řešení? Děkuji
${#${řetežec sem}}
. Ale to v bashi asi nebude.
${#parameter}
The length in characters of the expanded value of parameter is substituted. If parameter is ‘*’ or ‘@’, the value substituted is the number of positional parameters. If parameter is an array name subscripted by ‘*’ or ‘@’, the value substituted is the number of elements in the array.
man zshexpn
dává určitou naději při použití něčeho takového:${(g::)#řetezec} ${(g::)#${proměnná}}Inkriminovaná část manuálové stránky říká toto:
Parameter Expansion Flags ... g:opts: Process escape sequences like the echo builtin when no options are given (g::)...V Bashi jsem nic podobného nenašel. Ale vyzkoušené to nemám.
Jop, platí, spletl jsem se.Jen jsem se ujišťoval.
V Bashi jsem nic podobného nenašel. Ale vyzkoušené to nemám.Nojo, jenže v bashi se echo chová velice předvídatelně a bez dalších voleb nic takového nedělá. Já bych asi pustil echo -e, pak bych z toho vybral jen tisknutelné znaky, a nakonec bych to nechal spočítat.
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
color='\e[1;30mblabla\e[0m - \e[1;31mblabla\e[0m - \e[1;32mblabla\e[0m - \e[1;33mblabla\e[0m' nocolor="${color//\\e!(*m*)m/}" length=${#nocolor}
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.