Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
Google Site



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Closed Thread
English Japanese Spanish French German Portuguese Italian Powered by Powered by Google
 
Thread Tools Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 08-24-2009
Registrert bruker
 

Bli Dato: Aug 2009
Innlegg: 6
Data manipulasjon med Awk

Hei folkens,

Jeg er nytt medlem her og jeg trenger litt hjelp med Awk søknad. Jeg bruker den gjennom Terminal app for OSX (I'm a Mac-bruker).

Jeg har et stort arkiv med en stor mengde data (rader med 3D kartesiske koordinater). Dataene er vanligvis slik følgende eksempel (faktisk, dataene er laget av flere tusen "kurver" definert av en liste med punkter i 3D):

Sitat:
2,344 1,453 -1,345
1,234 3,134 3,123
2,566 1,345 2,344
-1,234 -2,333 -4,555
1,344 1,453 -1,345 # End of kurve
3,234 4,134 6,123
2,566 4,345 3,344
-1,234 -2,333 -4,555
-7,344 1,453 -5,345 # End of kurve
1,234 -3,134 3,123
6,566 5,345 8,344
-1,234 2,333 4,555 # End of kurve
Jeg trenger Awk å lese inn filen, og skrive ut det antall linjer for hver "kurve" (med noen tilfeldig symbol foran), etterfulgt av en liste over linjenumre. Fra dataene ovenfor, Awk bør output noe sånt som dette:

Sitat:
NumberOfLines 5
0 1 2 3 4

NumberOfLines 4
5 6 7 8

NumberOfLines 3
9 10 11
Ta oppmerksom på at den første linjen er nummerert som "0".
Hvordan kan jeg gjøre det? Noen har en idé?

Eneste data manipulasjon jeg vet å gjøre med Awk er som dette eksempelet:

Sitat:
cat path_to_input | awk '(print $ 1 "\ t" $ 2 "\ t" $ 3 "\ t")'> path_to_output
Takk, og beklager for meg dårlig engelske.
Sponsede lenker
  #2 (permalink)  
Old 08-24-2009
Moderator
 

Bli Date: Feb 2007
Bosted: Nederland
Innlegg: 4962
Prøv dette:


Code:
awk '
{s=n?s " " c++:c++; n++}
/# End/{print "NumberOfLines " n; print s "\n"; n=0; s =""}
' file

  #3 (permalink)  
Old 08-24-2009
Registrert bruker
 

Bli Date: Mar 2009
Bosted: Frankrike, Montpellier
Innlegg: 162
Hei!

52 Franklin, kunne du forklare din kommandolinje .... jeg forstår ikke en del ...


Code:
{s=n?s " " c++:c++;

Takk på forhånd.
  #4 (permalink)  
Old 08-24-2009
Moderator
 

Bli Date: Feb 2007
Bosted: Nederland
Innlegg: 4962
Sitat:
Originally Posted by protocomm View Post
Hei!

52 Franklin, kunne du forklare din kommandolinje .... jeg forstår ikke en del ...


Code:
{s=n?s " " c++:c++;

Takk på forhånd.
Jeg har brukt en betinget operatør, er skjemaet:


Code:
expr ? action1 : action2

Hvis expr er sann, returnerer action1 else return action2


Code:
s=n?s " " c++:c++

Explanation:

if n != 0 then s = s " " c++ else s = c++

Hilsen

Sist endret av Franklin52; 08-24-2009 kl 04:21.. Ã…rsak: Rettelse av forklaring: hvis n! \u003d 0 i stedet for hvis n \u003d 0
  #5 (permalink)  
Old 08-24-2009
Registrert bruker
 

Bli Date: Mar 2009
Bosted: Frankrike, Montpellier
Innlegg: 162
Flott, takk ...
  #6 (permalink)  
Old 08-24-2009
Registrert bruker
 

Bli Dato: Aug 2009
Innlegg: 6
Sitat:
Originally Posted by Franklin52 View Post
Prøv dette:


Code:
awk '
{s=n?s " " c++:c++; n++}
/# End/{print "NumberOfLines " n; print s "\n"; n=0; s =""}
' file

OMG! Den arbeidet like en ynde!

THANK YOU SO MUCH!
  #7 (permalink)  
Old 08-24-2009
Registrert bruker
 

Bli Dato: juni 2007
Sted: Beijing Kina
Innlegg: 1133

Code:
awk '/End of/{
if(flag==0){
  flag=1
  print "NumberOfLines"NR
  for(i=1;i<=NR;i++){
    printf i-1" "
  }
  pre=NR
}
else{
  num=NR-pre
  print "NumberOfLines"num
  for(i=pre+1;i<=NR;i++){
    printf i-1" "
  }
  pre=NR
}
print ""
}'

Sponsede lenker
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er PÃ¥
Smilefjes er PÃ¥
[IMG] koden PÃ¥
HTML-koden Av
Pingbacks er PÃ¥
Refbacks er Av


Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Data manipulasjon / formatering spørsmålet ddurden7 UNIX for Dummies Spørsmål og svar 2 04-12-2009 08:42
Data manipulasjon i perl chriss_58 Shell programmering og Skripting 1 06-13-2008 02:56
data manipulasjon script grinder182533 UNIX for Dummies Spørsmål og svar 1 11-10-2006 02:48
Mer logge manipulasjon StevePace Shell programmering og Skripting 8 02-13-2006 03:20
Hjelp med å logge manipulasjon StevePace Shell programmering og Skripting 3 01-31-2006 08:28



Alle klokkeslett er GMT -4. NÃ¥ er klokken 02:00.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2010. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0