The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Shell script for tekst extraction fra en fil vignesh53 Shell programmering og Skripting 3 02-05-2008 08:16
Rapportfilen utvinning basert på Datoperiode ganapati Shell programmering og Skripting 2 07-13-2006 12:26
dato-utvinning fra en fil i ksh homer_hn Shell programmering og Skripting 6 04-21-2006 02:51
trenger hjelp til å legge linjer / kombinere linjer i en fil ... mr_manny Shell programmering og Skripting 2 01-06-2006 06:45
Hjelp på filen extraction apalex UNIX for Dummies Spørsmål og svar 1 05-01-2001 11:29

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 04-27-2008
srsahu75 srsahu75 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 15
Utvinning av forskjellige linjer fra et Hugh fil

Kjære medlemmer,
Jeg har en stor fil som genereres av kommandoen "whois for hundre av IP-adresser. Hvert avsnitt i filen starter med [Søk whois

Jeg vil trekke ut de linjene som starter med disse ordene: [søk whois, OrgName, NetRange, inetnum, descr, eier, land i denne delen.

Input:

[Søk whois.XJHIOUIIOOPIOP]


OrgName: Universitetet i C
OrgID: U1
Adresse: OIT
Adresse: NH
By: BC
StateProv: XY
Postnummer: 000000
Land: MN

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


[Søk whois.ABCE.TSD]

% Rights begrenset av opphavsrett.
% Se

% Merk: Denne produksjonen har blitt filtrert.
% For å få resultater for en database oppdateringen, bruker du "-B" flag


inetnum: XXX.YYY.MN - XXX.YYY.MQ
netname: NET-C
descr: HB
descr: University
Land: PQ
admin-c: Tye
tech-c: SDF
status: FGRG
mnt-by: FSDGFG
Kilde: FGDFSG

rolle: OPRROKROTR
Adresse: University
Besøksadresse: DJFIEJRE
Besøksadresse: DIJAIRJEJ
Besøksadresse: EIREROERE

Nødvendig effekt:

[Søk whois.BUHIOUJIOU]
OrgName: HHHHHHHHHH (kanskje ikke)
NetRange: TTTTTTTTT (kanskje ikke)
inetnum: FTYFYYYUII (kanskje ikke)
descr: HIJKJKLLKL (Det vil være bedre hvis bare første forekomsten)
Eier: JHKJOJOIPI (kanskje ikke)
Land: OIOPOPOP (1. forekomst)

Takke deg
Med hensyn
  #2 (permalink)  
Old 04-27-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Ulike registratorene bruke ulike utgangsformater. Så med mindre du er søkene et svært begrenset antall domener, for eksempel domener alle registrert av en person, eller av andre grunner alle registrerte med samme registrar eller bare et lite sett med registratorer, kan dette vise seg å være mer komplisert enn du tror .

Kanskje det ville være nyttig som et første skritt for å skille oppføringene til forskjellige filer, avhengig av [Søk ... linjen? Prøv csplit kommandoen for det. Deretter kan du opprette en parser for hver av de formatene du finner der inne.

Hvordan vet du når du skal stoppe? Ofte en posten vil inneholde hierarkisk informasjon (spesielt for ARIN informasjon, som er hva ABCE.TSD eksempel ser slik ut) som senere linjene er mer spesifikk enn den tidligere dem. Så du ofte vil senere linjene, ikke i tidligere meldinger. (Men dette avhenger av hva du trenger dette for, selvsagt.)

Allikevel, her er et forsøk på å implementere gjeldende spec. Dette bare plukker ut den første av noe etter søk linje:

Code:
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
Dette kom ut litt mer kjempestor enn jeg ønsker at det skal være, men kanskje du kan bruke den som utgangspunkt.

(I ettertid, kanskje det ville vært bedre å bruke en hash å holde oversikt over hvilke verdier som allerede er tatt, og ikke fange hvis nummerverdien sier vi allerede har det vi ser på. Skyv tatt seg til en matrise om å bevare rekkefølge er viktig.)

Sist endret av æra; 04-27-2008 på 08:53.. Reason: Legg til / i flagget å gjøre målrettet ignorere saken
  #3 (permalink)  
Old 04-29-2008
srsahu75 srsahu75 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 15
Hei,
Tusen takk for hjelpen. Skriptet er svært nyttig opp til 70% av mine behov. Jeg vil prøve å gjøre noe for resten av mine 30%.

Takke deg
Med hensyn
Satya
  #4 (permalink)  
Old 05-05-2008
srsahu75 srsahu75 is offline
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 15
Kjære Era,
Jeg vil skriptet bør ta inndatafilen som en variabel samt utdatafilen. Jeg har to tekstfiler: (1) Liste over mapper der skriptet skal fungere (2) Liste over input filer som skriptet skal fungere.
På grunn av manglende Perl kunnskap jeg prøvde mislykket. I Shell skript jeg bruker:

for i in `(cat countries.txt)`
gjøre

for j i `(cat year.txt)`

gjøre

for k i `(cat land / $ i / $ j)`

gjøre



Samme måte som jeg vil ha den perl script ta inndatafil som variabel

Takk
  #5 (permalink)  
Old 05-05-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Som et spørsmål om shell koding stil, parentesene er helt unødvendig, og greier i backticks fungerer dårlig hvis det er et filnavn med mellomrom i den.

Jeg ser ikke hvorfor du ikke kunne bruke den shell script å bryte Perl kode; det er ikke mye det som Perl fungerer bedre enn skallet, annet enn ikke å måtte lese landet filen igjen og igjen (men du kan optimalisere det i shell script, too). Men likevel, her går. Jeg er redd dette er helt utestet.

Code:
#!/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
Registrert bruker
  
 

Bli Date: Jan 2008
Innlegg: 15
Takk for koden

Hilsen
Closed Thread

Hugseliste

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 05:53.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0