[Linux-Biella] script di parsing
stefano porrino
linux@bilug.linux.it
Thu, 14 Feb 2002 17:30:27 +0100
CIARROCCHI Paolo wrote:
>
> Ciao a tutti,
> devo fare uno script per estrarre alcune informazioni da un file simile a
> questo:
>
> memory 20
> 0.15user 0.11system 0:00.27elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (95major+10275minor)pagefaults 0swaps
> cat: /proc/comp_cache_stat: No such file or directory
> memory 40
> 0.49user 0.39system 0:00.87elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (95major+20535minor)pagefaults 0swaps
> cat: /proc/comp_cache_stat: No such file or directory
> memory 60
> 0.69user 0.68system 0:01.37elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
> 0inputs+0outputs (95major+30795minor)pagefaults 0swaps
> cat: /proc/comp_cache_stat: No such file or directory
>
> Devo ottenere un file che contiene il valore vicino a memory ed
> il valore relativo a elapsed e CPU.
>
> L'output dovrebbe essere cosi
>
> 20 00.27
> 40 00.87
> 60 01.37
>
> e
> 20 95
> 40 100
> 60 99
>
> In pratico voglio fare un grafico dei risultati con gnuplot.
>
> Suggerimenti ?
>
> --
prova un po' qui:
#!/usr/local/bin/tclsh
# apre file di input e lo legge tutto d'un fiato
set f [open /tmp/paolo]
set list [split [read $f] \n]
close $f
# apre un altro file per l'output
set f [open /tmp/risultati w+]
foreach el $list {
if {[lindex $el 0]=="memory"} {
set risultato [lindex $el 1]
}
if {[set iniz [string last "elapsed" $el]]>=0} {
set fine [string last "\%" [string range $el $iniz end]]
lappend risultato [string range $el [expr $iniz+8] [expr
$fine+$iniz-1!
puts $f $risultato
}
}
close $f
spero faccia quello che chiedi ; )
Ciao
--
Stefano Porrino <stefano@porrino.it>
<http://www.porrino.it>