The UNIX and Linux Forums  


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
Shell script szöveges extrahálás a fájlban vignesh53 Shell programozás és Scripting 3 02-05-2008 08:16 AM
Report file extrahálás alapuló Időintervallum ganapati Shell programozás és Scripting 2 07-13-2006 12:26 PM
Dátum-kitermelés a fájlt a KSH homer_hn Shell programozás és Scripting 6 04-21-2006 02:51 AM
segítségre van szükségük appending tétel / tételek ötvözi egy kép ... mr_manny Shell programozás és Scripting 2 01-06-2006 06:45 PM
Súgó fájl extrahálás apalex A UNIX a dummies Kérdések és válaszok 1 05-01-2001 11:29 PM

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 04-27-2008
srsahu75 srsahu75 is offline
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 15
Extrahálás különböző sorokat a fájl Hugh

Kedves Tagok,
Van egy hatalmas kép által parancs "whois" a száz IPs. Minden egyes szakaszban a fájl kezdődik [Lekérdezés whois

Azt akarom, hogy ezek a vonalak, amelyek kivonat kezdeni bármelyik ezeket a szavakat: [Lekérdezés whois, OrgName, NetRange, inetnum, descr, a tulajdonos, hogy az ország részt.

Bemeneti:

[Lekérdezés whois.XJHIOUIIOOPIOP]


OrgName: University of C
OrgID: U1
Cím: OIT
Cím: NH
Város: BC
StateProv: XY
Irányítószám: 000000
Ország: MN

NetRange: XXX.YYY.MN - XXX.YYY.MQ
CIDR: LMANERIE
NetName: UC


[Lekérdezés whois.ABCE.TSD]

% Korlátozza a szerzői jogok.
% Lásd

% Megjegyzés: Ez a teljesítmény már leszűrjük.
% Fogadása kimenet egy adatbázis frissítést, a "B" jelölés


inetnum: XXX.YYY.MN - XXX.YYY.MQ
netname: NET-C
descr: HB
descr: The University
ország: PQ
admin-c: Tye
tech-c: SDF
állapot: FGRG
mnt-by: FSDGFG
Forrás: FGDFSG

Szerep: OPRROKROTR
Cím: The University
Cím: DJFIEJRE
Cím: DIJAIRJEJ
Cím: EIREROERE

Előírt teljesítmény:

[Lekérdezés whois.BUHIOUJIOU]
OrgName: HHHHHHHHHH (vagy nem létezik)
NetRange: TTTTTTTTT (vagy nem létezik)
inetnum: FTYFYYYUII (vagy nem létezik)
descr: HIJKJKLLKL (Ez jobb lesz, ha csak első előfordulás)
Tulajdonos: JHKJOJOIPI (vagy nem létezik)
Ország: OIOPOPOP (1. előfordulás)

Köszönetet mond neked
Ami
  #2 (permalink)  
Old 04-27-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
Különböző regisztrátorok különböző kimeneti formátumokat. Tehát ha Ön lekérdezi egy nagyon korlátozott számú területeken, például a bejegyzett domain egy személy, vagy egyéb okok miatt minden regisztrált ugyanazzal a hivatalvezető, vagy csak egy kis sor nyilvántartók, akkor kiderül, hogy sokkal összetettebb, mint azt hitted .

Talán hasznos lenne, hogy első lépésként a külön bejegyzések különböző fájlok függően [Lekérdezés ... sor? Próbálja ki a csplit parancsot adott. Ezután hozzon létre egy parser mind a formátumokat találsz itt.

Honnan tudod, hogy mikor hagyja abba? Gyakran rekord tartalmazza hierarchikus adatokat (különösen az ARIN információt, ami a ABCE.TSD például néz ki), amelyek a későbbi sorok konkrétabbak, mint a korábbiak. Akkor gyakran akarjuk, hogy a későbbi van, nem a korábbiak. (De ez attól függ, mit kell ez az, persze.)

Különben is, itt van egy kísérlet végrehajtása a jelenlegi spec. Ez egyszerűen választás az első valami után Lekérdezés sor:


Kód:
perl -ne 'if (/^\[Querying/) {
  print; @wanted = qw(OrgName NetRange inetnum descr owner Country);
  $wanted = &wanted(@wanted);
}
sub wanted {
  return "^(" . join ("|", map { quotemeta $_ } @_) . "):";
}
if ($wanted && $_  =~ m/$wanted/i) {
  print;
  @wanted = grep { $_ ne $1 } @wanted;
  $wanted = @wanted ? &wanted(@wanted) : "";
}' file

Ez jött ki még egy kicsit szörnyű, mint ahogy szeretném, hogy legyen, de talán tudja használni, mint a kiindulási pont.

(Visszatekintve, talán jobb lett volna használni hash tartani a lépést, amely az értékek már elfoglalták, és nem elkülönítését, ha a hash mondja, már az is néztem. Nyomd a rögzített közül egy tömbben, ha megőrzése érdekében is fontos.)

Last edited by korszak; 04/27/2008 at 08:53 AM.. Indoka: Add / i zászló hogy egyezési ignore ügy
  #3 (permalink)  
Old 04-29-2008
srsahu75 srsahu75 is offline
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 15
Szia,
Nagyon köszönöm a segítséget. A script nagyon hasznos, akár 70%-én kell. Megpróbálom csinálni valamit a többi az én 30%-ot.

Köszönetet mond neked
Ami
Satya
  #4 (permalink)  
Old 05-05-2008
srsahu75 srsahu75 is offline
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 15
Kedves Era,
Azt akarom, hogy a forgatókönyvet kell figyelembe a bemeneti fájl egy változó, valamint a kimeneti fájlt. Van két szöveges fájlokat: (1) A mappák, amelyek a forgatókönyv szerint kell a munkát (2) A bemeneti fájlokat, amikor a forgatókönyvet kell működnie.
Hiánya miatt Perl ismeretek Megpróbáltam sikertelenül. A Shell script használom:

mert a "(cat countries.txt)"
tesz

A j a "(cat year.txt)"

tesz

k a "(cat országok / $ i / $ j)"

tesz



Ugyanaz, ahogy én akarom, hogy a perl szkript megteszi a bemeneti_fájl változó

Köszönöm
  #5 (permalink)  
Old 05-05-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
Az az igazság, héjas kódolási stílus, a zárójelben teljesen felesleges, és a dolgok backticks működik rosszul, ha van egy fájl nevét szóközökkel van.

Nem értem, miért nem használja shell scriptet, hogy a wrap Perl kódot, ott nem sok van, amely Perl nem jobb, mint a Shell, amely nem más, mint olvasni az ország fájlt újra és újra (de azt is, hogy optimalizálja a héj szkript is). De amúgy is itt megy. Attól tartok, ez teljesen teszteletlen.


Kód:
#!/usr/bin/perl

die "Usage: $0 dir yearfile countryfile" unless (@ARGV == 3);

open (Y, "$ARGV[1]") || die "$0: Could not open $ARGV[1]: $!\n";
open (C, "$ARGV[2]") || die "$0: Could not open $ARGV[2]: $!\n";
my @countries = <C>;
close C;
while ($year = <Y>) {
  for $country (@countries) {
    handle ("$ARGV[0]/$year/$country");
  }
}
close Y;

sub handle {
  my ($file) = @_;
  open (F, $file) || die "$0: Could not open $file: $!\n";
  while (<F>) {
    if (/^\[Querying/) {
      print; @wanted = qw(OrgName NetRange inetnum descr owner Country);
      $wanted = &wanted(@wanted);
    }
    if ($wanted && $_  =~ m/$wanted/i) {
      print;
      @wanted = grep { $_ ne $1 } @wanted;
      $wanted = @wanted ? &wanted(@wanted) : "";
    }
    close F;
  }
}  
sub wanted {
  return "^(" . join ("|", map { quotemeta $_ } @_) . "):";
}

  #6 (permalink)  
Old 05-07-2008
srsahu75 srsahu75 is offline
Regisztrált felhasználó
  
 

Join Date: Jan 2008
Hozzászólások: 15
Köszönöm szépen a kódot

Üdvözlettel
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 01:17 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