Portál AbcLinuxu, 11. května 2025 04:29

Dotaz: Bash/Shell - Počet znaků

6.1.2013 22:29 Orlando
Bash/Shell - Počet znaků
Přečteno: 843×
Odpovědět | Admin
Ještě mám jeden takový záludný problém, v souboru mám uložený řádek
\e[1;30mblabla\e[0m - \e[1;31mblabla\e[0m - \e[1;32mblabla\e[0m - \e[1;33mblabla\e[0m
a 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 - blabla
poradí někdo jednoduché řešení? Děkuji
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

mess avatar 6.1.2013 22:58 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevím, jak bash, ale zsh na to má speciální konstrukci ${#${řetežec sem}}. Ale to v bashi asi nebude.
Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
8.1.2013 11:44 letni lyzar
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Samozrejme, ze ma :)

bash manual

${#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.
9.1.2013 09:09 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
To je vám bohužel platné jako lyže v létě. Tazatel potřebuje spočítat jen viditelné znaky, tedy ty, které se zobrazí na terminálu kdzž napíšete třeba echo -e "řetězec".
pavlix avatar 9.1.2013 12:27 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Ale to platí i pro tu zsh konstrukci, ne?
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
mess avatar 9.1.2013 14:23 mess | skóre: 43 | blog: bordel | Háj ve Slezsku - Smolkov
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Jop, platí, spletl jsem se. Ale příkaz 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.
Cez párne mesiace zošíváš vaginy, cez neparne montuješ hajzle.
pavlix avatar 9.1.2013 15:40 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
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.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
6.1.2013 23:10 l4m4
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Odpovědět | | Sbalit | Link | Blokovat | Admin
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
8.1.2013 09:56 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Odpovědět | | Sbalit | Link | Blokovat | Admin
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}
If you hold a Unix shell up to your ear, you can you hear the C.
8.1.2013 16:58 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash/Shell - Počet znaků
Oprava: este predtym treba zapnut silnejsie shellpaterny: shopt -s extglob
If you hold a Unix shell up to your ear, you can you hear the C.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.