Re: rtorrent med conky, någon som vill göra en HowTo?[löst]
Postat: 08 aug 2008, 19:41
jag löste det genom att sätta dit mawk. nu tror jag det funkar 

Forum för Ubuntus svenska gemenskap
https://ubuntu-se.servebbs.org/
Jo nu funkar det, den visar bara de som är igång och inte de som är closedBadOmen skrev:jag löste det genom att sätta dit mawk. nu tror jag det funkar
xmlstarlet sel -t -v / |Konservburk skrev:Vad menar du med att sätta dit mawk?
det verkar som man max kan skriva ut 1020 tecken om jag fattar det rätt?a pattern scanning and text processing language
Mawk is an interpreter for the AWK Programming Language. The AWK
language is useful for manipulation of data files, text retrieval and
processing, and for prototyping and experimenting with algorithms. Mawk
is a new awk meaning it implements the AWK language as defined in Aho,
Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley
Publishing, 1988. (Hereafter referred to as the AWK book.) Mawk conforms
to the POSIX 1003.2 (draft 11.3) definition of the AWK language
which contains a few features not described in the AWK book, and mawk
provides a small number of extensions.
Mawk is smaller and much faster than gawk. It has some compile-time
limits such as NF = 32767 and sprintf buffer = 1020.
kanske du skulle kunna göra de ändringarna så att det inte blir nått annat felKonservburk skrev:I så fall måste du ändra från \0 till \b och ta bort kommentaren framför xargs om sorteringen ska fungera.
Enda problemet med att du inte ändrar själv är att jag inte vet exakt vilken kod som fungerade för dig och vilken som inte gjorde det. Det kan ju därför hända att jag ändrar på en version som ändå inte hade fungerat innan. Men vi gör ett försök iaf:BadOmen skrev:kanske du skulle kunna göra de ändringarna så att det inte blir nått annat felKonservburk skrev:I så fall måste du ändra från \0 till \b och ta bort kommentaren framför xargs om sorteringen ska fungera.
Kod: Markera allt
#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
d.get_name= \
d.get_up_rate= \
d.get_down_rate= \
d.get_completed_chunks= \
d.get_size_chunks= \
d.is_active= \
|
xmlstarlet sel -t -v / |
awk '/./ {
if (++i%6 == 1) name=$0
else if (i%6 == 2) up[name]=$0
else if (i%6 == 3) down[name]=$0
else if (i%6 == 4) done[name]=$0
else if (i%6 == 5) size[name]=$0
else if (i%6 == 0) active[name]=$0
} END {
for(name in up) {
if(active[name]) {
up_sum += up[name]
down_sum += down[name]
#if(++j<=4)
{
printf("Namn: %s\n", name)
printf("Klart: %d%%\n", 100 * done[name] / size[name])
printf("Upp: %.1f kB/s\n", up[name] / 1024)
printf("Ner: %.1f kB/s\n", down[name] / 1024)
printf("\n\b")
}
}
}
printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z
Kod: Markera allt
#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
d.get_name= \
d.get_up_rate= \
d.get_down_rate= \
d.get_completed_chunks= \
d.get_size_chunks= \
d.is_active= \
|
xmlstarlet sel -t -v / |
mawk '/./ {
if (++i%6 == 1) name=$0
else if (i%6 == 2) up[name]=$0
else if (i%6 == 3) down[name]=$0
else if (i%6 == 4) done[name]=$0
else if (i%6 == 5) size[name]=$0
else if (i%6 == 0) active[name]=$0
} END {
for(name in up) {
if(active[name]) {
up_sum += up[name]
down_sum += down[name]
#if(++j<=4)
{
printf("Namn: %s\n", name)
printf("Klart: %d%%\n", 100 * done[name] / size[name])
printf("Upp: %.1f kB/s\n", up[name] / 1024)
printf("Ner: %.1f kB/s\n", down[name] / 1024)
printf("\n\0")
}
}
}
printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
#xargs -d'\b' -n1 printf '%s\0' |
sort -z
Den funkade inte fasten jag satte dit mawk. Du får försöka med den jag gav dig just som jag sa att jag använde.Konservburk skrev:Enda problemet med att du inte ändrar själv är att jag inte vet exakt vilken kod som fungerade för dig och vilken som inte gjorde det. Det kan ju därför hända att jag ändrar på en version som ändå inte hade fungerat innan. Men vi gör ett försök iaf:BadOmen skrev:kanske du skulle kunna göra de ändringarna så att det inte blir nått annat felKonservburk skrev:I så fall måste du ändra från \0 till \b och ta bort kommentaren framför xargs om sorteringen ska fungera.
Kod: Markera allt
#!/bin/sh test -S "$2" && "$@" d.multicall default \ d.get_name= \ d.get_up_rate= \ d.get_down_rate= \ d.get_completed_chunks= \ d.get_size_chunks= \ d.is_active= \ | xmlstarlet sel -t -v / | awk '/./ { if (++i%6 == 1) name=$0 else if (i%6 == 2) up[name]=$0 else if (i%6 == 3) down[name]=$0 else if (i%6 == 4) done[name]=$0 else if (i%6 == 5) size[name]=$0 else if (i%6 == 0) active[name]=$0 } END { for(name in up) { if(active[name]) { up_sum += up[name] down_sum += down[name] #if(++j<=4) { printf("Namn: %s\n", name) printf("Klart: %d%%\n", 100 * done[name] / size[name]) printf("Upp: %.1f kB/s\n", up[name] / 1024) printf("Ner: %.1f kB/s\n", down[name] / 1024) printf("\n\b") } } } printf("Upp totalt: %.1f kB/s\n", up_sum / 1024) printf("Ner totalt: %.1f kB/s\n", down_sum / 1024) }' | xargs -d'\b' -n1 printf '%s\0' | sort -z
Nu börjar jag fundera på om det kan vara xargs-raden som inte fungerar för dig... Försök kommentera bort den en gång. Det borde du kunna klara själv.BadOmen skrev:Den funkade inte fasten jag satte dit mawk. Du får försöka med den jag gav dig just som jag sa att jag använde.
Det funkar fortfarande men jag får en fyrkant:I så fall måste du ändra från \0 till \b och ta bort kommentaren framför xargs om sorteringen ska fungera.
BadOmen skrev:en Fyrkant framför varje rad som börjar med Namn men klar, upp och ner ser ut som de ska.
sen Upp totalt: har en fyrkant framför sig och ner totalt har en på raden under sig.
Det ser ut som det är radbrytningen som skrivs ut som fyrkant
Kod: Markera allt
#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
d.get_name= \
d.get_up_rate= \
d.get_down_rate= \
d.get_completed_chunks= \
d.get_size_chunks= \
d.is_active= \
|
xmlstarlet sel -t -v / |
awk '/./ {
if (++i%6 == 1) name=$0
else if (i%6 == 2) up[name]=$0
else if (i%6 == 3) down[name]=$0
else if (i%6 == 4) done[name]=$0
else if (i%6 == 5) size[name]=$0
else if (i%6 == 0) active[name]=$0
} END {
for(name in up) {
if(active[name]) {
up_sum += up[name]
down_sum += down[name]
#if(++j<=4)
{
printf("Namn: %s\n", name)
printf("Klart: %d%%\n", 100 * done[name] / size[name])
printf("Upp: %.1f kB/s\n", up[name] / 1024)
printf("Ner: %.1f kB/s\n", down[name] / 1024)
printf("\n\b")
}
}
}
printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z |
xargs -0 -n1
Kod: Markera allt
#!/bin/sh
test -S "$2" &&
"$@" d.multicall default \
d.get_name= \
d.get_up_rate= \
d.get_down_rate= \
d.get_completed_chunks= \
d.get_size_chunks= \
d.is_active= \
|
xmlstarlet sel -t -v / |
awk '/./ {
if (++i%6 == 1) name=$0
else if (i%6 == 2) up[name]=$0
else if (i%6 == 3) down[name]=$0
else if (i%6 == 4) done[name]=$0
else if (i%6 == 5) size[name]=$0
else if (i%6 == 0) active[name]=$0
} END {
for(name in up) {
if(active[name]) {
up_sum += up[name]
down_sum += down[name]
#if(++j<=4)
{
printf("Namn: %s\n", name)
printf("Klart: %d%%\n", 100 * done[name] / size[name])
printf("Upp: %.1f kB/s\n", up[name] / 1024)
printf("Ner: %.1f kB/s\n", down[name] / 1024)
printf("\n\b")
}
}
}
printf("Upp totalt: %.1f kB/s\n", up_sum / 1024)
printf("Ner totalt: %.1f kB/s\n", down_sum / 1024)
}' |
xargs -d'\b' -n1 printf '%s\0' |
sort -z
jag kör en till torrent som laddar i 41 KB/s men den är inte med här nu, av valNamn: ubuntu-7.10-desktop-amd64.iso
Klart: 100%
Upp: 0.0 kB/s
Ner: 0.0 kB/s
Namn: ubuntu-8.04.1-desktop-i386.iso
Klart: 100%
Upp: 0.0 kB/s
Ner: 0.0 kB/s
Namn: ubuntu-8.04-desktop-amd64.iso
Klart: 100%
Upp: 0.0 kB/s
Ner: 0.0 kB/s
Upp totalt: 0.6 kB/s
Ner totalt: 41.4 kB/s
jonas@Jonas-Desktop:~$
Konservburk skrev:BadOmen skrev:en Fyrkant framför varje rad som börjar med Namn men klar, upp och ner ser ut som de ska.
sen Upp totalt: har en fyrkant framför sig och ner totalt har en på raden under sig.
Det ser ut som det är radbrytningen som skrivs ut som fyrkanthihi, fyrkanterna kan inte vara något annat än backspace-tecken. Det stärker mina misstankar om att conky inte gillar nolltecken. Här är en variant som rensar bort alla nolltecknen det sista den gör:
Kod: Markera allt
#!/bin/sh test -S "$2" && "$@" d.multicall default \ d.get_name= \ d.get_up_rate= \ d.get_down_rate= \ d.get_completed_chunks= \ d.get_size_chunks= \ d.is_active= \ | xmlstarlet sel -t -v / | awk '/./ { if (++i%6 == 1) name=$0 else if (i%6 == 2) up[name]=$0 else if (i%6 == 3) down[name]=$0 else if (i%6 == 4) done[name]=$0 else if (i%6 == 5) size[name]=$0 else if (i%6 == 0) active[name]=$0 } END { for(name in up) { if(active[name]) { up_sum += up[name] down_sum += down[name] #if(++j<=4) { printf("Namn: %s\n", name) printf("Klart: %d%%\n", 100 * done[name] / size[name]) printf("Upp: %.1f kB/s\n", up[name] / 1024) printf("Ner: %.1f kB/s\n", down[name] / 1024) printf("\n\b") } } } printf("Upp totalt: %.1f kB/s\n", up_sum / 1024) printf("Ner totalt: %.1f kB/s\n", down_sum / 1024) }' | xargs -d'\b' -n1 printf '%s\0' | sort -z | xargs -0 -n1
Jag tycker den ser ut att vara helt sorterad. Vad är fel i fel ordning?BadOmen skrev:Jag får den dock i den ordning som du ser det blev när jag körde i terminalen nått inlägg upp. Så det är inte i bokstavsordning än