The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

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
wie zu lesen, indem Datensatz aus einer Datei im Unix - raoscb UNIX for Dummies Questions & Answers 1 05-16-2008 06:30 AM
Script für die Suche eine schlechte Aufnahme in einer Datei dann der Datensatz in der Datei schlecht shilendrajadon Shell Programmierung und Scripting 2 12-28-2007 10:02 AM
Script für die Suche eine schlechte Aufnahme in einer Datei dann der Datensatz in der Datei schlecht shilendrajadon UNIX für Fortgeschrittene und Experten 1 12-28-2007 10:00 AM
Aufteilung eines Datensatzes und einen Eintrag in eine Datei rsolap Shell Programmierung und Scripting 1 08-13-2007 01:58 PM
Wählen Sie Text in passender () Halterung Cursive UNIX for Dummies Questions & Answers 4 04-20-2007 02:14 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 06-05-2008
synmag synmag is offline
Registrierte Nutzer
  
 

Join Date: Jun 2008
Beiträge: 3
Wählen Sie einen Datensatz aus einer Datei von der zweiten Abstimmung Datei mit awk

Ich brauche Hilfe

Ich habe zwei Dateien, und ich möchte, um einen Bericht auf der Grundlage der beiden.

Filea:
hostname, account1, Passwort
, account2, Passwort
hostname, account1, Passwort
hostname, account1, Passwort
, account1, Passwort
, account2, Passwort

Wiederholung Hostnamen sind leer

fileb:
Hosta
hostb
hostc

Ich brauche, um eine Aufnahme von "hostname Passwort" für alle Hosts in fileb, die in Filea für einen bestimmten Account. Dh ich will eine Liste der Root-Passwörter für alle Hosts in fileb. Ich weiß, dass die Logik Ich möchte aber nicht über die Scripting-Fähigkeiten zu ihrer Umsetzung. Ich denke, der einfachste Weg wäre, awk, um die Platinen mit den Hostnamen Filea und dann einfach ein Shell-Skript zu grep für jeden Host in fileb der neuen Filea.

Der andere Weg ist, um nach Filea für jeden Host in fileb, bis entweder das Konto mit der Hostname oder ist anders und das Ergebnis ausdrucken. Wenn das Konto nicht für den angegebenen Hostnamen nichts.

Ich versuche zu retten manuell tun dies, indem er Scripting Denken wäre es schneller, aber vielleicht war ich falsch

Hier ist der Rahmen, kam ich mit so viel für die schwieriger Weg, da wäre es elegant

#! / bin / sh
#
hosts \u003d `cat hosts.txt"
hostname \u003d "x"
last \u003d "x"

Namen für die Gastgeber in $ ()
tun
# awk die Logik würde hier
getan
  #2 (permalink)  
Old 06-05-2008
lo tan lo tan is offline
Registrierte Nutzer
  
 

Registriert seit: Mai 2008
Beiträge: 8
Sie können uns ein Beispiel für das Ergebnis, dass Sie versuchen zu erreichen und auf dieser Basis können wir mit einer Lösung.
  #3 (permalink)  
Old 06-06-2008
Ära era is offline Forum Advisor  
Herder sinnlosen Katzen (Am Sabbatical)
  
 

Join Date: März 2008
Location: / es / ist / nur / bin / sh
Beiträge: 3652
Du meinst so etwas?

Code:
sed -e 's/.*/^&,/' fileb | grep -f - filea
Nicht alle grep Versionen unterstützen die -f Option offensichtlich, aber die Idee ist einfach für alles, was von grep fileb , die sich in den ersten Bereich der Filea.
  #4 (permalink)  
Old 06-06-2008
synmag synmag is offline
Registrierte Nutzer
  
 

Join Date: Jun 2008
Beiträge: 3
Zitat:
Zitat von Ära View Post
Du meinst so etwas?

Code:
sed -e 's/.*/^&,/' fileb | grep -f - filea
Nicht alle grep Versionen unterstützen die -f Option offensichtlich, aber die Idee ist einfach für alles, was von grep fileb , die sich in den ersten Bereich der Filea.
Vielen Dank für die Antwort. Meine Version nicht unterstützt F-leider. Mit Blick auf den Code, wo würde ich den Account-Namen Ich bin auf der Suche nach? Sprich, wenn ich will, um die Host-Konto, das Kennwort für root-Konten? Auch würde diese Arbeit für die Datensätze, in denen der Host-Name leer ist?

Zur Klärung des Problems, Filea hat Platinen für wiederholen Hostnamen und sagen, wenn Wurzel ist in einer Rekordzeit von denen es keine Hostnamen wie Sie leiten den Hostnamen für die Aufnahme? Der Hostname Ich interessiere mich für die nicht vor leeren Datensatz.

Beispiel:

Hosta, JohnDoe, ABC 123
, Wurzel, 4009dlkj
hostb, janedoe, rrrrrr

, wenn Host A ist in fileb die erwartete die für die Wurzel ist

Hosta, Wurzel, 4009dlkj

Ich war versucht, awk zu ersetzen, die mit einem leeren Hostnamen aus dem vorherigen Datensatz nicht leeren, aber ich werden immer Fehler. Ich könnte nicht einmal speichern $ 1 auf eine Variable und drucken Sie es aus, wie ein Test. Ich weiß sed ist sehr leistungsfähig, aber ich habe nicht denken, dass dies getan werden könnte, mit einer Zeile.

I ended up doing manuell letzten Nacht. An diesem Punkt ist es zu untersuchen, Geist wollen wissen, und es könnte sich als nützlich, wenn ich es wieder tun.

TIA
  #5 (permalink)  
Old 06-06-2008
reborg's Avatar
reborg reborg is offline Forum Staff  
Administrator
  
 

Join Date: März 2005
Ort: Irland
Posts: 4211
Zitat:
Zitat von Ära View Post
Nicht alle grep Versionen unterstützen die -f Option offensichtlich, aber die Idee ist einfach für alles, was von grep fileb , die sich in den ersten Bereich der Filea.
Richtig, aber die meisten, die nicht unterstützt entweder egrep-f oder fgrep.
  #6 (permalink)  
Old 06-09-2008
Ära era is offline Forum Advisor  
Herder sinnlosen Katzen (Am Sabbatical)
  
 

Join Date: März 2008
Location: / es / ist / nur / bin / sh
Beiträge: 3652
Oh, ich missverstanden Beschreibung Ihres Problems. Hier ist etwas, was hoffentlich näher an, was Sie wollten.

Code:
awk -F , -v acct=root 'NR==FNR { h[$1]++; next; }
{ if($1 == "") $1=host; host=$1; if (! h[$1]) next;
if ($2 == acct) print }' fileb filea
Der NR \u003d\u003d FNR Bedingung wahr ist, während fileb gelesen wird. Dies ist eine gemeinsame awk Sprache für das Lesen in einer Datei von Hilfs-Daten, bevor die wichtigsten Verarbeitung. Die Host-Namen in fileb werden, um das Array h. Dann, in den Hauptteil des Skripts, wenn das erste Feld leer ist, wird der Wert der Gastgeber Variable wird für $ 1. Dann wird der aktuelle Wert von $ 1 wird daran erinnert werden, in Gastgeber bei der nächsten Zeile (n) leer ersten vier Felder. Dann, wenn das Array h enthält nicht die aktuelle Host-Namen (dh es wurde nicht in fileb), Die aktuelle Zeile wird übersprungen. Schließlich, wenn das zweite Feld ist identisch mit der Variable acct, Die Zeile ist.

(Really alten Varianten von awk keine Weitergabe in Variablen mit dem -v Option - wenn Sie dieses Problem haben, sehen Sie, wenn Sie finden nawk oder mawk oder gawk auf Ihrem System, oder ein XPG4 awk. Oder Sie können interpolieren die Variable direkt in das Skript.)
  #7 (permalink)  
Old 06-11-2008
synmag synmag is offline
Registrierte Nutzer
  
 

Join Date: Jun 2008
Beiträge: 3
Zitat:
Zitat von Ära View Post
Oh, ich missverstanden Beschreibung Ihres Problems. Hier ist etwas, was hoffentlich näher an, was Sie wollten.

Code:
awk -F , -v acct=root 'NR==FNR { h[$1]++; next; }
{ if($1 == "") $1=host; host=$1; if (! h[$1]) next;
if ($2 == acct) print }' fileb filea
Der NR \u003d\u003d FNR Bedingung wahr ist, während fileb gelesen wird. Dies ist eine gemeinsame awk Sprache für das Lesen in einer Datei von Hilfs-Daten, bevor die wichtigsten Verarbeitung. Die Host-Namen in fileb werden, um das Array h. Dann, in den Hauptteil des Skripts, wenn das erste Feld leer ist, wird der Wert der Gastgeber Variable wird für $ 1. Dann wird der aktuelle Wert von $ 1 wird daran erinnert werden, in Gastgeber bei der nächsten Zeile (n) leer ersten vier Felder. Dann, wenn das Array h enthält nicht die aktuelle Host-Namen (dh es wurde nicht in fileb), Die aktuelle Zeile wird übersprungen. Schließlich, wenn das zweite Feld ist identisch mit der Variable acct, Die Zeile ist.

(Really alten Varianten von awk keine Weitergabe in Variablen mit dem -v Option - wenn Sie dieses Problem haben, sehen Sie, wenn Sie finden nawk oder mawk oder gawk auf Ihrem System, oder ein XPG4 awk. Oder Sie können interpolieren die Variable direkt in das Skript.)
Das ist genau das, was ich wollte. Meine Version von awk nicht für die Weitergabe der Variablen, aber ich habe nawk, und es funktionierte tadellos.

Auf der Grundlage von awk Dokumentation habe ich versucht, den Block beginnen, die Datei zu lesen, aber konnte nicht herausfinden, wie man aus zwei Dateien. Würden Sie bitte erläutern, wie awk legt fest, welche Datei zu lesen, aus? Ist es den Code in die erste Reihe von Klammern () liest die erste Datei geliefert und den zweiten Satz der zweiten Datei?

Danke. Ich habe viel von dieser!
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 11:42 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