The UNIX and Linux Forums  
Hello and Welcome-tól az Egyesült Államokat, hogy az UNIX és Linux Forums? Köszönjük, hogy meglátogatta és csatlakozik Globális Közösség.

Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Hogyan olvasd rekord a rekord egy fájlt unix raoscb A UNIX a dummies Kérdések és válaszok 1 05-16-2008 07:30 AM
Script keresni olyan rossz a kép, akkor tegye a rekord a rossz fájlt shilendrajadon Shell programozás és Scripting 2 12-28-2007 10:02 AM
Script keresni olyan rossz a kép, akkor tegye a rekord a rossz fájlt shilendrajadon A UNIX a fejlett és szakértői Felhasználók 1 12-28-2007 10:00 AM
szétdarabolják nyilvántartást és hozzáadása a rekord egy fájlba rsolap Shell programozás és Scripting 1 08-13-2007 02:58 PM
Válasszon szövegtervezetre matching () zárójel folyóírás A UNIX a dummies Kérdések és válaszok 4 04-20-2007 03: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 Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 06-05-2008
synmag synmag is offline
Regisztrált felhasználó
  
 

Join Date: Jun 2008
Hozzászólások: 3
válasszon ki egy feljegyzést egy file egyeztetés a második fájlt awk

Segítségre van szükségem

Nekem van két bemeneti fájlokat, és szeretnék létrehozni egy jelentést a kettő.

filea:
hostname, account1, jelszó
, account2, password
hostname, account1, jelszó
hostname, account1, jelszó
, account1, password
, account2, password

ismétlő állomásnevek üresek

fileb:
hosta
hostb
hostc

Én szükség van-e nyilvántartást "hostname fiók jelszava:" az összes Seregek fileb előforduló filea egy adott számla. Vagyis szeretnék egy listát az összes root jelszót Seregek fileb. Tudom, hogy a logika szeretném használni, de nincs az alkotó képességek annak végrehajtására. Azt hiszem, a legegyszerűbb módja az lenne, hogy használja awk, hogy töltse ki a részeket az állomásnevét filea, majd egyszerűen használ egy shell scriptet grep minden házigazda fileb az új filea.

A másik út az, hogy lerobbant filea minden hostname-ben fileb, amíg vagy a számla párosított vagy hosztneve a különböző nyomtatott és az eredményt. Ha a fiók nem létezik a megadott hostname semmit.

Próbálom menteni manuálisan Ennek a script azt gondolva, hogy gyorsabb lenne, de lehet, hogy én tévedtem

Itt az a keret, én találtam ki eddig a nehezebb utat mert ez sokkal elegánsabb

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

A nevet a $ (hosts)
tesz
# a logikai awk jönne ide
kész
  #2 (permalink)  
Old 06-05-2008
lo tan lo tan is offline
Regisztrált felhasználó
  
 

Join Date: May 2008
Hozzászólások: 8
Ön ad nekünk példát az eredménye, hogy megpróbálja elérni, és alapot, hogy mi kerülhet egy olyan megoldást találni.
  #3 (permalink)  
Old 06-06-2008
era era is offline Forum Advisor  
Herder a Mihaszna Cicák (A szombati)
  
 

Join Date: Mar 2008
Helyszín: / ott / is / csak a / bin / sh
Hozzászólások: 3652
Mármint valami ilyesmi?

Kód:
sed -e 's/.*/^&,/' fileb | grep -f - filea
Nem minden grep verziói az -F lehetőség látszik, de a gondolat, hogy egyszerűen a grep számára semmit fileb amely az első mezőben a filea.
  #4 (permalink)  
Old 06-06-2008
synmag synmag is offline
Regisztrált felhasználó
  
 

Join Date: Jun 2008
Hozzászólások: 3
Idézet:
Originally Posted by era View Post
Mármint valami ilyesmi?

Kód:
sed -e 's/.*/^&,/' fileb | grep -f - filea
Nem minden grep verziói az -F lehetőség látszik, de a gondolat, hogy egyszerűen a grep számára semmit fileb amely az első mezőben a filea.
Kösz a választ. Saját verziója nem támogatja az-f sajnos. Nézzük a kódot, ha akarnám meg a fiók nevét keresem? Mondd, ha nem szeretném felsorolni a gép, a számla, az összes root jelszót számlákat? Is lenne az a munka, ahol a rekordok gépnév üres?

Tisztázni a problémát, már filea nyersdarabokat ismétlődő Hostnév és ha mondjuk gyökere van egy rekord, ahol nincs hostname honnan származik a hostname for the record? A hostname keresem a korábbi nem üres rekordot.

Például:

Hosta, johndoe, ABC123
, gyökér, 4009dlkj
hostb, janedoe, rrrrrr

Ha egy fogadó van fileb várható el kiírni gyökér

Hosta, gyökér, 4009dlkj

Próbáltam használni awk helyett az üres a gépnév a korábbi rekordot nonblank de én tartott szerzés hibákat. Sem tudtam tárolni $ 1 változó, és nyomtassa ki, mint egy teszt. Tudom sed Nagyon hatékony, de én nem hiszem, ez lehetne tenni egy sorban.

Így végül kézzel csinálni tegnap este. Ezen a ponton ez érdeklődő elme szeretné tudni, és talán jól jöhet, ha kell tennem, hogy újra.

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

Join Date: Mar 2005
Helyszín: Írország
Hozzászólások: 4.229
Idézet:
Originally Posted by era View Post
Nem minden grep verziói az -F lehetőség látszik, de a gondolat, hogy egyszerűen a grep számára semmit fileb amely az első mezőben a filea.
Igaz, de a legtöbb nem fogja támogatni sem egrep-f vagy fgrep.
  #6 (permalink)  
Old 06-09-2008
era era is offline Forum Advisor  
Herder a Mihaszna Cicák (A szombati)
  
 

Join Date: Mar 2008
Helyszín: / ott / is / csak a / bin / sh
Hozzászólások: 3652
Ó, félreértették a probléma leírását. Itt van valami, amely remélhetőleg közelebb áll ahhoz, amit akart.

Kód:
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
A NR \u003d\u003d FNR a feltétel igaz, míg fileb olvasása. Ez egy gyakori awk idióma olvasásra egy fájlban a kiegészítő adatokat, mielőtt a fő feldolgozás. Az állomások nevét fileb fogják használni, akkor tud a tömb h. Aztán a fő szerve a szkript, ha az első mező üres, értékét a házigazda változó fogják használni $ 1. Akkor a jelenlegi értéke $ 1 emlékezni fognak a házigazda abban az esetben a következő sor (ok) már az első üres mezőket. Ezután, ha a tömb h nem tartalmazza az aktuális host nevét (ami nem volt jelen a fileb), A jelenlegi vonal kimarad. Végül, ha a második mező megegyezik a változó acct, A vonal van nyomtatva.

(Nagyon régi változatai awk nem támogatja megy végbe a változók a -v lehetőség - ha ezt a problémát, hátha talál nawk vagy mawk vagy mamlasz a rendszeren, vagy egy XPG4 awk. Vagy tudod interpolál a változó közvetlenül a forgatókönyvet.)
  #7 (permalink)  
Old 06-11-2008
synmag synmag is offline
Regisztrált felhasználó
  
 

Join Date: Jun 2008
Hozzászólások: 3
Idézet:
Originally Posted by era View Post
Ó, félreértették a probléma leírását. Itt van valami, amely remélhetőleg közelebb áll ahhoz, amit akart.

Kód:
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
A NR \u003d\u003d FNR a feltétel igaz, míg fileb olvasása. Ez egy gyakori awk idióma olvasásra egy fájlban a kiegészítő adatokat, mielőtt a fő feldolgozás. Az állomások nevét fileb fogják használni, akkor tud a tömb h. Aztán a fő szerve a szkript, ha az első mező üres, értékét a házigazda változó fogják használni $ 1. Akkor a jelenlegi értéke $ 1 emlékezni fognak a házigazda abban az esetben a következő sor (ok) már az első üres mezőket. Ezután, ha a tömb h nem tartalmazza az aktuális host nevét (ami nem volt jelen a fileb), A jelenlegi vonal kimarad. Végül, ha a második mező megegyezik a változó acct, A vonal van nyomtatva.

(Nagyon régi változatai awk nem támogatja megy végbe a változók a -v lehetőség - ha ezt a problémát, hátha talál nawk vagy mawk vagy mamlasz a rendszeren, vagy egy XPG4 awk. Vagy tudod interpolál a változó közvetlenül a forgatókönyvet.)
Pontosan ez az, amit akartam. Saját awk verziót nem támogatta a tompított a változó, de megvan nawk és ez tökéletesen működött.

Alapuló awk dokumentáció Voltam kipróbálás-hoz használ a blokk kezd olvasni a fájlt, de nem tudta kitalálni, hogyan kell olvasni a két fájlt. Nem bánná awk arról, hogyan határozza meg, melyik fájlt olvasni? Ez a kód az első sor zárójel () beolvassa az első fájl-ellátást és a második a második fájlt?

Köszönöm. Sokat tanultam ebből!
Closed Thread

Könyvjelzõk

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 08:45 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0