The UNIX and Linux Forums  


Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Die Weitergabe der Werte an den sekundären Skript, wenn es sich durch das primäre Skript venu_eie UNIX für Fortgeschrittene und Experten 2 07-03-2008 08:10 AM
Die Weitergabe der Werte an den sekundären Skript, wenn es sich durch das primäre Skript venu_eie Shell Programmierung und Scripting 1 07-03-2008 07:16 AM
ein Shell-Skript, und fordert ein anderes Skript und ein awk-Skript magikminox Shell Programmierung und Scripting 0 06-26-2008 03:50 AM
hilft mir bei der Übermittlung von Parametern sqlplus Skript Unix-Shell-Skript Hara Shell Programmierung und Scripting 2 01-29-2008 03:31 PM
Shell-Skript: einfügen wollen Werte in der Datenbank, wenn Update-Skript läuft Ring Shell Programmierung und 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registrierte Nutzer
  
 

Join Date: Jul 2006
Beiträge: 94
Um dieses Problem zu beheben, wie awk Skript?

Ich habe eine Log-Datei sieht wie folgt aus, während

+ +
user_a blabla
blabla nas_b blabla user_d
Dies ist ein user_a
Junk-line
anderen Junk-line
user_c nas_m blabla
+ +

im Grunde die meisten der Zeilen enthalten ein "Benutzer" Keywords, und der Rest der Linien nicht haben "user" an.

So habe ich das folgende Skript, die nur Auszüge der Benutzer Teil (falls dieser Linie hat ein Benutzer Stichwort) aus jeder Zeile

awk '(for (i \u003d 0; i <\u003d NF; i + +)
if ($ i ~ / user /)
(a \u003d $ i)
sonst
(weiter)
(print a)
) "/ Tmp / test

und wenn ich es hatte, bekam ich folgendes Ergebnis

user_a
user_d
user_a
user_a #<\u003d\u003d\u003d tatsächlich gibt es keine Benutzer in dieser Zeile an.
user_c

Warum dies geschieht und wie kann ich mein Skript? Danke
  #2 (permalink)  
Old 02-11-2009
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Join Date: Dezember 2007
Ort: Haus der 17-Weltmeister Boston Celtics
Beiträge: 1311
Cool

Ich denke, es liegt daran, dass Sie immer einen Wert Druck. Also, Sie sind nicht über-schreiben 'a' ni die Instanz der 4. Zeile, so dass, wenn Sie die Variable, Sie werden immer die zuletzt gespeicherten Wert von 'a'.
Vielleicht wie die erste Zeile Ihrer asser andere, eine
Code:
a=""

zu leeren, die letzte "A"-Wert?
  #3 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registrierte Nutzer
  
 

Join Date: Jul 2006
Beiträge: 94
Ich reliazed dieses Problem, aber es scheint, kann ich das Problem nicht beheben, ist das geänderte Skript

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

und die Ausgabe Änderung

nein
user_d
user_a
nein
nein

das ist nicht richtig an.


Zitat:
Zitat von joeyg View Post
Ich denke, es liegt daran, dass Sie immer einen Wert Druck. Also, Sie sind nicht über-schreiben 'a' ni die Instanz der 4. Zeile, so dass, wenn Sie die Variable, Sie werden immer die zuletzt gespeicherten Wert von 'a'.
Vielleicht wie die erste Zeile Ihrer asser andere, eine
Code:
a=""

zu leeren, die letzte "A"-Wert?
  #4 (permalink)  
Old 02-11-2009
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 2926
Mit awk:


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

Mit Perl:


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

Mit GNU grep:


Code:
grep -o 'user[^ \t]*' infile

  #5 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registrierte Nutzer
  
 

Join Date: Jul 2006
Beiträge: 94
Vielen Dank, ich weiß, in diesem Beispiel habe ich, egrep ist eine bessere Wahl, aber meine Arbeit ist ", sich auch" Benutzer "und" uns ", und dann drucken Sie das Ergebnis.

unten ist das Ergebnis möchte ich

+
user_a nas_b
user_d nas_b
user_a
user_c nas_m
+

Aber das Problem ist, egal, wie ich mein Skript geändert, ich werde nicht das gewünschte Ergebnis ...

[QUOTE \u003d radoulov; 302286540] Mit awk:


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

Mit Perl:
  #6 (permalink)  
Old 02-11-2009
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Posts: 2926
Zitat:
Zitat von fedora View Post
Vielen Dank, ich weiß, in diesem Beispiel habe ich, egrep ist eine bessere Wahl, aber meine Arbeit ist ", sich auch" Benutzer "und" uns ", und dann drucken Sie das Ergebnis.

unten ist das Ergebnis möchte ich

+
user_a nas_b
user_d nas_b
user_a
user_c nas_m
+
Ich verstehe nicht die Logik ...
Warum user_d nas_b?
  #7 (permalink)  
Old 02-11-2009
fedora fedora is offline
Registrierte Nutzer
  
 

Join Date: Jul 2006
Beiträge: 94
Sorry, das war ein Tippfehler
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 02:22 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0