The UNIX and Linux Forums  
Hej og Velkommen fra USA til UNIX og Linux Forums! Tak for dit besøg og deltager i vores globale samfund.

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
Beståelse af værdier til den sekundære script, når den påberåbes af primær script venu_eie UNIX for Advanced & Ekspertsøgning Brugere 2 07-03-2008 08:10 AM
Beståelse af værdier til den sekundære script, når den påberåbes af primær script venu_eie Shell Programmering og Scripting 1 07-03-2008 07:16 AM
oprette en shell script, der kræver et andet script og og en awk script magikminox Shell Programmering og Scripting 0 06-26-2008 03:50 AM
hjælp mig med at sende parametre fra sqlplus script til UNIX shell script Hara Shell Programmering og Scripting 2 01-29-2008 03:31 PM
Shell Script: vil indsætte værdier i databasen, når opdateringen script løber ring Shell Programmering og Scripting 1 10-25-2007 04:06 AM

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 02-11-2009
fedora fedora is offline
Registreret Bruger
  
 

Join Date: Jul 2006
Stillinger: 94
hvordan man kan løse dette awk script?

Jeg har en log-fil, mens ser sådan her ud

+ +
user_a blabla
blabla nas_b blabla user_d
dette er en user_a
junk linje
en anden junk linje
user_c nas_m blabla
+ +

stort set de fleste af de linjer, indeholder en "bruger" søgeord, og resten af de linjer, har ikke "bruger" på alle.

Så jeg har følgende script, som bare uddrag brugerens side (hvis denne linje har en bruger søgeord) fra hver linje

awk '(for (i \u003d 0; i <\u003d NF; i + +)
if ($ i ~ / user /)
(a \u003d $ i)
anden
(fortsætte)
(print a)
) '/ Tmp / test

og når jeg har kørt det, jeg fik følgende resultat

user_a
user_d
user_a
user_a #<\u003d\u003d\u003d faktisk er der ingen bruger i denne linje overhovedet.
user_c

hvorfor dette sker, og hvordan kan jeg lave mit script? tak
  #2 (permalink)  
Old 02-11-2009
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dec 2007
Location: Home af 17-tiden verdensmester Boston Celtics
Stillinger: 1311
Cool

Jeg tror, det er fordi du altid udskriver en værdi. Så du er ikke over-skrive 'a' ni forekomsten af 4. linje, så når du udskriver den variabel, får du det sidste lagrede værdi af 'a'.
Måske som den første linje ater dine andet, gør en
Code:
a=""
til blank ud sidste 'a' værdi?
  #3 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registreret Bruger
  
 

Join Date: Jul 2006
Stillinger: 94
Jeg reliazed dette problem, men det synes jeg kan ikke løse problemet, her er den modificerede script

awk '(for (i \u003d 0; i <\u003d NF; i + +)
if ($ i ~ / user /)
(a \u003d $ i)
anden
(a \u003d "no")
(Fortsætte)
(print a)
) '/ Tmp / test

og output skifte til

nej
user_d
user_a
nej
nej

der ikke er korrekt på alle.


Citat:
Oprindeligt Indsendt af joeyg View Post
Jeg tror, det er fordi du altid udskriver en værdi. Så du er ikke over-skrive 'a' ni forekomsten af 4. linje, så når du udskriver den variabel, får du det sidste lagrede værdi af 'a'.
Måske som den første linje ater dine andet, gør en
Code:
a=""
til blank ud sidste 'a' værdi?
  #4 (permalink)  
Old 02-11-2009
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
narkoman
  
 

Join Date: Jan 2007
Beliggenhed: Варна, България / Milano, Italia
Indlæg: 2.879
Med awk:

Code:
awk '{ 
  for (i=1; i<=NF; i++)
    if ($i ~ /user/)
      print $i
      }' infile
Med Perl:

Code:
perl -lne'print $1 while /(user[^\s]*)/g' infile
Med GNU grep:

Code:
grep -o 'user[^ \t]*' infile
  #5 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registreret Bruger
  
 

Join Date: Jul 2006
Stillinger: 94
Tak, jeg kender i dette eksempel, jeg gav, egrep er et bedre valg, men faktisk mit egentlige arbejde er "at finde ud af både" bruger "og" nas "del, og derefter udskrive resultatet.

nedenfor, er det resultat jeg ønsker

+
user_a nas_b
user_d nas_b
user_a
user_c nas_m
+

Men problemet er, uanset hvordan jeg ændret mit manuskript, jeg vil bare ikke få det ønskede resultat ...

[Quote \u003d radoulov; 302286540] Med awk:

Code:
awk '{ 
  for (i=1; i<=NF; i++)
    if ($i ~ /user/)
      print $i
      }' infile
Med Perl:
  #6 (permalink)  
Old 02-11-2009
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
narkoman
  
 

Join Date: Jan 2007
Beliggenhed: Варна, България / Milano, Italia
Indlæg: 2.879
Citat:
Oprindeligt Indsendt af fedora View Post
Tak, jeg kender i dette eksempel, jeg gav, egrep er et bedre valg, men faktisk mit egentlige arbejde er "at finde ud af både" bruger "og" nas "del, og derefter udskrive resultatet.

nedenfor, er det resultat jeg ønsker

+
user_a nas_b
user_d nas_b
user_a
user_c nas_m
+
Jeg forstår ikke logikken ...
Hvorfor user_d nas_b?
  #7 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registreret Bruger
  
 

Join Date: Jul 2006
Stillinger: 94
Undskyld, det var en tastefejl
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 02:04 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