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.

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øg denne tråd Rate Thread Display Modes
  #1 (permalink)  
Old 10-27-2008
h3llh0l3 h3llh0l3 is offline
Registreret Bruger
  
 

Join Date: oktober 2008
Stillinger: 9
Er det muligt med sed eller awk?

Hej alle,

Jeg er Tring at skrive et script, der bør læse den første linje i filen og udføre nogle opgaver. Når opgaven er fuldført næste linje i filen skal læses opgaven skal udføres.
Så er det muligt at få en tæller slags ting, i sed eller awk, hvilket ville tilvækst og dermed forårsage den næste linje, der skal læse?
Følgende er, hvordan jeg tænkte på at gøre det, men det fungerer ikke, som jeg ikke kan tildele værdien til $ C for at få læst en linje:


Code:
C=1 #counter
while true
do
 LOG=`sed '$C!d' /var/log/somelog.log`
 #
 perform the task on $LOG
 #
 C=`expr $C + 1`
done

Tak
  #2 (permalink)  
Old 10-27-2008
danmero danmero is offline Forum Advisor  
  
 

Join Date: Nov 2007
Beliggenhed: 45.48-73.63
Indlæg: 1.439
Basic scripting koncept:

Code:
while read line
do
  #perform the task on "$line"
done < /var/log/somelog.log

  #3 (permalink)  
Old 10-27-2008
h3llh0l3 h3llh0l3 is offline
Registreret Bruger
  
 

Join Date: oktober 2008
Stillinger: 9
Tak for svaret danmero.

Jeg havde prøvet det tidligere. Når scriptet lyder gennem somelog.log og når EOF det udgange. Men jeg ønsker ikke, at det for at afslutte. Hvis EOF er nået scriptet skal vente indtil nye linje indsættes i somelog.log og derefter udfører den opgave. Også de nye til somelog.log vil blive tilføjet med tilfældige intervaller.

Nogen forslag til, hvordan man kan have script vente, hvor den stoppede snarere end spændende og fortsætte, når den nye linje indsættes?

Tak.
  #4 (permalink)  
Old 10-27-2008
Tytalus's Avatar
Tytalus Tytalus is offline Forum Advisor  
echo (1 .. 9) ^ 2 \; | bc
  
 

Join Date: Jun 2003
Location: Skotland
Posts: 431
De kunne tail-f log og parse at gennem script.

Bør arbejde .... alternativ metode er at huske, hvor du fik i den fil (line count) og derefter køre dit script med mellemrum starter, hvor du slap - bare være omhyggelig håndtering logrotates
  #5 (permalink)  
Old 10-27-2008
h3llh0l3 h3llh0l3 is offline
Registreret Bruger
  
 

Join Date: oktober 2008
Stillinger: 9
Citat:
Oprindeligt Indsendt af Tytalus View Post
De kunne tail-f log og parse at gennem script.

Bør arbejde .... alternativ metode er at huske, hvor du fik i den fil (line count) og derefter køre dit script med mellemrum starter, hvor du slap - bare være omhyggelig håndtering logrotates
Hvis jeg tail-f log og parse det via scriptet, når en ny linje indsættes til log scriptet udgange.
Jeg har ikke prøvet alternative skridt endnu da jeg ikke bekendt med logrotates.
Ville der være nogen anden måde at gøre dette?

Tak.
  #6 (permalink)  
Old 10-28-2008
Tytalus's Avatar
Tytalus Tytalus is offline Forum Advisor  
echo (1 .. 9) ^ 2 \; | bc
  
 

Join Date: Jun 2003
Location: Skotland
Posts: 431
hmm - prøv noget lignende:


Code:
#  tail -f infile | while read line; do echo $line | tr "[a-z]" "[A-Z]"; done
HELLO
WORLD

hvor infile var en tom fil, og jeg bare gjorde:


Code:
#  echo hello >> infile
#  echo world >> infile

  #7 (permalink)  
Old 10-28-2008
h3llh0l3 h3llh0l3 is offline
Registreret Bruger
  
 

Join Date: oktober 2008
Stillinger: 9
Tak for svaret tytalus.

Jeg tror det ville ikke arbejde for mig som mit script indeholder 10 logikker i det. Så jeg tog en anden rute og bruge cron og ls og flytte filer rundt, når jobbet er forbi Jeg fik det til at gøre arbejdet. Men det ville have været rart og lettere, hvis jeg bare kunne finde ud af en måde at gøre det, fordi jeg ønskede. Men jeg vil dog fortsætte med at læse igennem og se om jeg kan gøre det på den måde, jeg ønskede at gøre det.

Tak igen.
Closed Thread

Bogmærker

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 01:18 PM.


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