The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Hur kan jag läsa en text fil i UNIX - ELF-64 körbara objekt fil - IA64 alexcol UNIX för avancerade & Expertanvändare 8 11-07-2008 08:56
Post Shell programmering: Fråga om källan en fil och läsa data från filen ccwq Shell-programmering och Skript 3 08-04-2007 11:28
Läs ord från filen och skapa ny fil med hjälp av K-skal. bsrajirs Shell-programmering och Skript 4 06-01-2007 01:15
Läs XML-fil ram2s2001 Shell-programmering och Skript 2 12-12-2005 12:20
Hur man läser vissa linjer i en bulk filen med C-fil programmering rajan_ka1 High Level Programming 10 11-10-2005 03:29

Closed Thread
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ök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 04-25-2008
giorgos193 giorgos193 is offline
Registered User
  
 

Join Date: april 2008
Inlägg: 17
Hjälp med awk - läs från fil

Hej,

Jag har en fil som de följande:


Kod:
Starting to process segment 0 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 0: 5.49secs
Starting to process segment 1 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 1: 10.01secs
Starting to process segment 2 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 2: 7.82secs
Starting to process segment 3 (and symmetry related segments)
	Number of (cancelled) singularities: 0
	Number of (cancelled) negative numerators: 0
	Segment 3: 5.31secs

... och jag vill extrahera information om temne. Jag skulle vilja läsa filen, spara tid (i varje rad) för en variabel, bort suffixet sek och sedan lägga till den föregående värde. Resultatet blir den totala tiden ....

Jag försökte många saker men ingen av dem fungerar ... Om det hjälper, det sista jag försökte var


Kod:
 
TIME="`awk '/Segment/ {print $3%secs + $TIME} ' log.txt`"

echo $TIME

Det är en dum lösning, men jag tror att det kan förmedla vad jag vill göra ....
Jag misstänker att det har något att göra med att läsa varje rad separetely, men jag kan inte lista ut det ...

Tack på förhand ...
  #2 (permalänk)  
Old 04-25-2008
grumpf grumpf is offline
Registered User
  
 

Join Date: maj 2006
Inlägg: 101
detta fungerar för mig:

awk-F ":" '/ Segment / (print $ 2)' file.txt
5.49secs
10.01secs
7.82secs
5.31secs

rena skal:

grep segment file.txt | cut-d:-f2
  #3 (permalänk)  
Old 04-25-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.346
Prova detta:
Kod:
awk '
/Segment/{match($3,".");t+=substr($3,RSTART)}
END{print "Totaltime :"t}
' file

Hälsningar
  #4 (permalänk)  
Old 04-25-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderator
  
 

Join Date: februari 2007
Inlägg: 4.346
Även:


Kod:
awk '/Segment/{t+=$3}END{print "Totaltime :"t}' file

Hälsningar
  #5 (permalänk)  
Old 04-25-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
För att lägga till värden, är det nog om du få den summan i slutet? Sedan awk är allt du behöver:


Kod:
awk '/Segment/ { gsub("secs",""); time += $3 } END { print time }' file.txt

Om du verkligen verkligen vill slinga över den kumulativa tider och göra något som var i tanken, det skulle vara något liknande


Kod:
awk '/Segment/ { gsub ("secs",""); time += $3; print $3, time } file.txt |
while read THISTIME SUMTIME; do
  echo This time, we got $THISTIME
  echo Sum so far is $SUMTIME
done

Skalet är aritmetiska anläggningar heltal bara, så du kan inte summan nummer med fraktionerad delar i tanken själv. Få awk för att skriva ut både den nuvarande och den ackumulerade värdet för varje rad är ett trevligt sätt för att (och ett bra tillfälle att visa hur man kan läsa flera värden från samma linje i tanken).
  #6 (permalänk)  
Old 04-25-2008
giorgos193 giorgos193 is offline
Registered User
  
 

Join Date: april 2008
Inlägg: 17
Jag vill tacka er alla för er snabbt svar! Alla lösningar är bra! Jag uppskattar verkligen din insats!

@ Era: Jag är verkligen imponerad av din "sofistikerade" lösning!

Tack igen!
  #7 (permalänk)  
Old 04-29-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Join Date: juni 2007
Plats: Beijing Kina
Inlägg: 1.098

Kod:
sed '/Segment/ s/secs//' a > b
awk 'BEGIN{FS=":"}
$0 ~ /Segment/ {
if(t=="")
{
	t=$2
	print
}
else
{
	t=t+$2
	print $1" "t
}
}
$0 !~ /Segment/ {print}
' b
rm b

Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 03:31.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0