The UNIX and Linux Forums  

Go Back   UNIX og Linux Forums > Top Forums > Shell Programmering og Scripting
.
google unix.com



Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her.

Mere UNIX og Linux Forum Emner du måske kan finde Helpful
Tråd Thread Starter Forum Svar Last Post
Perl parsing forhold til ksh parsing Popeye Shell Programmering og Scripting 1 08-06-2008 11:46 PM
læsning linjer parvis fra fil i ksh ytokar Shell Programmering og Scripting 4 02-08-2008 02:50 PM
perl søg og erstat par umen Shell Programmering og Scripting 1 07-30-2006 12:37 PM
proc bache_gowda UNIX for dummyer Spørgsmål & svar 7 05-23-2005 12:18 PM
/proc aojmoj UNIX for Advanced & Ekspertsøgning Brugere 3 11-20-2002 05:54 PM

 
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Søg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 11-18-2008
felbane felbane is offline
Registreret Bruger
  
 

Join Date: Nov 2008
Stillinger: 1
Talking Parsing / proc / net / dev i hovedelementer: værdipar (selvstændig besvaret)

Hej alle,

Jeg har brug for hjælp med at bruge sed/awk / andre Linux-værktøjer til at opfylde følgende mål:

Jeg forsøger at tage outputtet af / proc / net / dev:
Code:
Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
    lo:18748525  129811    0    0    0     0          0         0 18748525  129811    0    0    0     0       0          0
  eth0:1699369069 226296437    0    0    0     0          0      3555 4118745424 194001149    0    0    0     0       0          0
  eth1:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
  sit0:       0       0    0    0    0     0          0         0        0       0    0    0    0     0       0          0
... dap ud et interface (eth0) og gøre det til følgende oplysninger:
Code:
rxbytes:1699369069 rxpackets:226296437 rxerrs:0 rxdrop:0 rxfifo:0 rxframe:0 rxcompressed:0 rxmulticast:3555 \
txbytes:4118745424 txpackets:194001149 txerrs:0 txdrop:0 txfifo:0 txcolls:0 txcarrier:0 txcompressed:0
Jeg har fået så vidt som denne kodestump:
Code:
cat /proc/net/dev | egrep "(eth0|face)" | sed -e 's/|/:/' | sed -e 's/|/ /' | cut -d ":" -f 2 | tr -s " " " "
 
bytes packets errs drop fifo frame compressed multicast bytes packets errs drop fifo colls carrier compressed
1709184740 226328683 0 0 0 0 0 3555 4122564415 194035769 0 0 0 0 0 0
... men jeg er ikke sikker på hvor de skal gå videre herfra, eller hvis det er endda den rette vej. Har nogen gjort noget lignende før (dvs. at dreje kolonner i nøglen: værdipar)?

Deres ekspertise er meget værdsat!

Update: Jeg har fundet ud af, hvordan man gennemfører rækker i kolonner (som er et skridt tættere på!):
Code:
cat /proc/net/dev | egrep "(eth0|face)" | sed -e 's/|/:/' | sed -e 's/|/ /' | cut -d ":" -f 2 | tr -s " " " " | \
awk 'BEGIN {FS=" "} {for (i=1;i<=NF;i++){ arr[NR,i]=$i; if(big <= NF) big=NF; }} \
END {for(i=1;i<=big;i++){for(j=1;j<=NR;j++){printf("%s:",arr[j,i]);}printf("\n");}}'

bytes:1718395341:
packets:226353349:
errs:0:
drop:0:
fifo:0:
frame:0:
compressed:0:
multicast:3555:
bytes:4126856358:
packets:194063589:
errs:0:
drop:0:
fifo:0:
colls:0:
carrier:0:
compressed:0:
Nu er jeg bare nødt til at finde ud af, hvordan prepend den "tx" og "rx" og strimler den efterfølgende «:» og jeg er i gang! Dette forum er awesome.

Update 2:
Jeg fik det! Den eneste måde, det kunne være bedre, er med CamelCase (RxBytes, osv.):
Code:
cat /proc/net/dev | egrep "(eth0|face)" | sed -e 's/|/:/' -e 's/|/ /' | cut -d ":" -f 2 | tr -s " " " " | \
awk 'BEGIN {FS=" "} {for (i=1;i<=NF;i++){ if(i<9){arr[NR,i]="rx"$i;}else{arr[NR,i]="tx"$i;} if(big <= NF) big=NF; }} \
END {for(i=1;i<=big;i++){for(j=1;j<=NR;j++){ printf("%s\t",arr[j,i]);}printf("\n");}}' | sed -e 's/\t$//' -e 's/\t/:/' -e 's/:[tr]x/:/'
rxbytes:1790844622
rxpackets:226585666
rxerrs:0
rxdrop:0
rxfifo:0
rxframe:0
rxcompressed:0
rxmulticast:3555
txbytes:4161116750
txpackets:194310608
txerrs:0
txdrop:0
txfifo:0
txcolls:0
txcarrier:0
txcompressed:0
Den multiline format, der faktisk fungerer godt for min ansøgning.

Sidst redigeret af otheus; 01-30-2009 på 07:31 AM.. Årsag: Woot!
 

Bogmærker

Tags
uløste, uløst i måneder, uløst i uger

Thread Tools Søg denne tråd
Søg denne tråd:

Avanceret søgning
Display Modes Bedøm denne tråd
Bedøm denne tråd:

Udstationering Regler
Du kan ikke post nye tråde
Du kan ikke post svar
Du kan ikke post vedhæftede filer
Du kan ikke redigere dine indlæg

BB-kode er
Smilies er
[IMG] koden er
HTML-koden er Slukket
Trackbacks er
Pingbacks er
Refbacks er




Alle tidspunkter er GMT -4. Den tid er nu 03:44 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Oversættelser Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. Alle rettigheder Reserved.Ad Management ved RedTyger

Content Relevant webadresser ved vBSEO 3.2.0