![]() |
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.
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
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 |
|
||||
|
Du meinst so etwas?
Code:
sed -e 's/.*/^&,/' fileb | grep -f - filea |
|
||||
|
Zitat:
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 |
|
||||
|
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
(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.) |
|
||||
|
Zitat:
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! |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|