Portál AbcLinuxu, 26. dubna 2024 22:24


Dotaz: jak dostat urcitou cast textoveho vystupu do promene

16.3.2009 21:50 Kamil
jak dostat urcitou cast textoveho vystupu do promene
Přečteno: 331×
Odpovědět | Admin

Dobry den,

pri mereni uploadu mam  textovy vystup ve forme:

upload.exe:                                              5.57 MB    3.47 MB/s

nevim jak bych mohl ale tento textovy vystup zkratit pouze na posledni hodnotu tedy v tomto pripade 3.47MB/s abych ji mohl nasledne ulozit do promene.Asi to pude pomoci sedu ale nevim jak to provest.

Dekuji vsem za pripadnou pomoc.

Kamil

Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Jendа avatar 16.3.2009 22:33 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene
Odpovědět | | Sbalit | Link | Blokovat | Admin
$ echo "upload.exe:                                              5.57 MB    3.47 MB/s" | sed -r s/'( +)/ /g' | cut -d " " -f 4,5
3.47 MB/s
Já to s tou denacifikací Slovenska myslel vážně.
16.3.2009 22:54 Kamil
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene

ta rychlost je ale pokazde jina.tedy misto toho vystupu ktery vykazuje prikaz ncftpput  forme nazev souboru -upload.exe- ,velikost souboru -5.57MB- a rychlost x.xx MB/s

upload.exe:                                              5.57 MB    3.47 MB/s

mi staci jen ta rychlost x.xx MB/s ktera je pokazde jina
16.3.2009 22:58 Kamil
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene

jeste jsem zapomel dodat ze abych to mohl ulozit do promene to oznaceni MB/s musi byt take odfiltrovano aby zustala ciste ciselna hodnota kterou potom ulozim do promene a dale pouzivam.

kamil

Fuky avatar 16.3.2009 23:03 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene
RYCHLOST=$(echo "upload.exe: 5.57 MB 3.47 MB/s" |sed 's/.* \([0-9\.]*\) MB\/s/\1/')
Fuky avatar 16.3.2009 23:00 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene

Nebo:

sed 's/.* \([0-9\.]* MB\/s\)/\1/'

16.3.2009 23:11 Kamil
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene

omlouvam se ale asi jsem se spatne vyjadril.situace je takova :

po zadani

ncftpput -u jmeno -p heslo ipadresa / upload.exe

se v konzole objevi

upload.exe:                                              5.57 MB    3.53 MB/s

no a ja bych potreboval zpracovat ten menici se udaj udaj x.xx MB/s tak aby s neho vznikla ciselna promena


kamil

16.3.2009 23:53 Kamil
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene
Odpovědět | | Sbalit | Link | Blokovat | Admin

Tohle mi uz funguje:

/usr/local/sbin//ncftpput -u jmeno -p heslo ipadresa / upload.exe 2>&1|sed 's/.* \([0-9\.]*\) MB\/s/\1/'

ale vysledek jsou dva radky treba

3.45

3.45

jak to zredukovat na jednoradkovy vystup?

kamil

Fuky avatar 17.3.2009 00:38 Fuky | skóre: 52 | blog: 4u
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene

Programy ncftpget a ncftpput vypisuji na stderr informaci o průběhu své činosti, vše se vypisuje na jeden řádek, protože programy využívají '\r' tj. znak "návrat vozíku", takže se původní řádek vždy přepíše. Takže pro relevantní informace nemůžeš použít uvedené řešení pomocí sed. Jako příklad uvádím řešení v Pythonu (v komentáři je uvedeno co se vypisuje na stderr, vše se načte do proměných a s nimi můžeš nakládat dle libosti):

#!/usr/bin/python

import subprocess

ftp_client = "ncftpget"
ftp_file = "ftp://cdimage.debian.org/debian-cd/5.0.0/i386/iso-cd/debian-500-i386-CD-1.iso"

pipe = subprocess.Popen("%s %s" % (ftp_client, ftp_file),
                        shell = True,
                        universal_newlines = True,
                        stderr = subprocess.PIPE).stderr

while (1):
    line = pipe.readline()
    try:
        # debian-500-i386-CD-1.iso:          ETA:  78:31   35.71/646.46 MB  132.75 kB/s
        file, eta, time, sum, sum_unit, speed, speed_unit = line.split()
        print "%s %s %s" % (file, speed, speed_unit)
    except:
        pass

pipe.close()

$ ./ftp.py 
debian-500-i386-CD-1.iso: 104.90 kB/s
debian-500-i386-CD-1.iso: 68.32 kB/s
debian-500-i386-CD-1.iso: 66.48 kB/s
debian-500-i386-CD-1.iso: 65.90 kB/s
debian-500-i386-CD-1.iso: 65.68 kB/s
debian-500-i386-CD-1.iso: 63.53 kB/s

17.3.2009 00:46 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene
sed -nr '$s/.* ([0-9.]+ [^ ]+)$/\1/p'
If you hold a Unix shell up to your ear, you can you hear the C.
17.3.2009 07:16 Kamil
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene
sed -nr '$s/.* ([0-9.]+ [^ ]+)$/\1/p'

tohleto mi nefunfuje. neco podobneho pouzivam pro wget :

 wget soubor 2>&1 | sed -n 's/.*(\([^ ]*\).*saved.*/\1/;T;p'

a vyhodi to jen ciselnou hodnotu. opravdu to nejde nejak vymaknout aby to na jednom radku vypsalo ciste  hodnotu za pouziti ncftppup ?

17.3.2009 08:40 Kamil
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene

dekuji vsem za ruzne napady uz jsem to vyresil .

ncftpput -u jmeno -p heslo ipadresa / upload.exe 2>&1|sed 's/.* \([0-9\.]*\) MB\/s/\1/' | sed '$d'

 

vypise to jen jeden radek

 

Dekuji vsem za rady.

Kamil

17.3.2009 10:09 dylino
Rozbalit Rozbalit vše Re: jak dostat urcitou cast textoveho vystupu do promene
proc nepouzijes awk?
$ echo 'jedna dva tri' | awk '{ print $3 }' # vytiskne tri
mnohem jednodussi nez sed :)

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.