![]() |
|
|
google unix.com
|
|||||||
| Fórumok | Regisztráció | Fórum Szabályok | Linkek | Albumok | GYIK | Tagok listája | Naptár | Keres | Mai hozzászólások | Megjelöl Fórumok Olvas |
| 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 |
![]() |
|
|
LinkBack | Téma eszközök | Keresés a téma | Rate Thread | Megjelenítési módok |
|
|
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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 |
|
||||
|
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 $_ } @_) . "):";
}
|
![]() |
| Könyvjelzõk |
| Téma eszközök | Keresés a téma |
| Megjelenítési módok | Rate this thread |
|
|