Nedalo mi to, abych to nezkusil vyřešit přes buffer. Dokonce je ten sed POSIX způsobilý:
dmesg | tail -33| echo -n $(sed -n 'H;${x;s/[^.]//gp}') | wc -m
sed ale asi výstup tisknout rovnou bez koncového newline neumí..
ještě awk:
dmesg | tail -33| awk '{gsub(/[^.]/,"");printf $0}' | wc -m
Ale ten Perl je tu víc než dvakrát rychlejší, než awk, i sed.
Mimochodem:
... nicmene docela by me zajimalo, jak to udelat sedem ... 's/[^.]//g' prekvapive v sedu nefunguje jak bych cekal (tedy oznac kazdy znak krome tecky) ..
Tohle naopak funguje přesně podle očekávání, vzhledem k tomu, že sed je řádkový procesor, fungující tudíž ve smyčce typu
while read line; do ...; done Edit: A řádově rychlejší je pak trdelník:
dmesg | tail -33| tr -cd . | wc -m