The UNIX and Linux Forums  

Go Back   El UNIX y Linux Foros > Arriba Foros > Programación de scripts de shell y
.
google unix.com



Programación de scripts de shell y Plantear preguntas sobre KSH, CSH, SH, BASH, PERL, PHP, SED, AWK y otros scripts de shell y lenguajes de script de shell aquí.

Más UNIX y Linux Foro Temas usted puede encontrar útiles
Hilo Hilo para principiantes Foro Respuestas Último mensaje
Script de shell para la extracción de texto desde un archivo vignesh53 Programación de scripts de shell y 3 02-05-2008 08:16 AM
Informe basado en la extracción de archivos en un rango de fechas ganapati Programación de scripts de shell y 2 07-13-2006 12:26 PM
fecha de extracción de un archivo en KSH homer_hn Programación de scripts de shell y 6 04-21-2006 02:51 AM
necesita ayuda para añadir líneas / combinando líneas dentro de un archivo ... mr_manny Programación de scripts de shell y 2 01-06-2006 06:45 PM
ayuda en la extracción de archivos apalex UNIX for Dummies Preguntas y Respuestas 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 vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 04-27-2008
srsahu75 srsahu75 is offline
Usuario Registrado
  
 

Fecha: enero 2008
Puestos: 15
La extracción de diversas líneas de un archivo de hugh

Estimados Miembros,
Tengo un gran archivo generado por el comando 'Whois' para cientos de direcciones IP. Cada sección en el archivo comienza con [Consulta Whois

Quiero extraer las líneas que comienzan con cualquiera de estas palabras: [Consulta Whois, OrgName, NetRange, inetnum, Descr, propietario, en esa sección del país.

Entrada:

[Consulta whois.XJHIOUIIOOPIOP]


OrgName: Universidad de C
OrgID: U1
Dirección: OIT
Dirección: NH
Ciudad: BC
StateProv: XY
Código Postal: 000000
País: MN

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


[Consulta whois.ABCE.TSD]

% Restringido por los derechos de autor.
% Ver

% Nota: Este producto ha sido filtrada.
Para recibir% de salida para una base de datos de actualización, utilice la opción "-B" del pabellón


inetnum: XXX.YYY.MN - XXX.YYY.MQ
netname: NET-C
descr: HB
descr: La Universidad
país: PQ
admin-c: TYE
tecnología-c: SDF
Estado: FGRG
mnt-por: FSDGFG
fuente: FGDFSG

papel: OPRROKROTR
dirección: La Universidad
dirección: DJFIEJRE
dirección: DIJAIRJEJ
dirección: EIREROERE

Requiere de salida:

[Consulta whois.BUHIOUJIOU]
OrgName: HHHHHHHHHH (puede o no presente)
NetRange: TTTTTTTTT (puede o no presente)
inetnum: FTYFYYYUII (puede o no presente)
descr: HIJKJKLLKL (Será mejor si sólo primera aparición)
propietario: JHKJOJOIPI (puede o no presente)
País: OIOPOPOP (1 ª aparición)

Gracias
Con respecto
  #2 (Enlace permanente)  
Old 04-27-2008
época era is offline Forum Advisor  
Pastor de Gatos Inútil (en año sabático)
  
 

Fecha: marzo 2008
Ubicación: / hay / es / sólo / bin / sh
Puestos: 3.652
Diferentes registradores utilizan diferentes formatos de salida. Por lo tanto, a menos que se consulta un conjunto muy limitado de ámbitos, por ejemplo, todos los dominios registrados por una persona, o por otras razones todos los registrados en el mismo registro o sólo un pequeño conjunto de los registradores, esto puede resultar más compleja de lo que pensabas .

Tal vez sería útil como un primer paso para separar las entradas a los diferentes archivos en función de la [Consulta ... línea? Pruebe el csplit comando para eso. A continuación, puede crear un analizador para cada uno de los formatos se encuentran en ese país.

¿Cómo sabes cuándo parar? A menudo se incluyen un registro de información jerárquica (especialmente para la información ARIN, que es lo que su ABCE.TSD ejemplo de esto es) en las últimas líneas que son más específicos que los anteriores. Entonces usted quiere que la frecuencia de líneas más adelante, no los anteriores. (Sin embargo, esto depende de lo que usted necesita para este, por supuesto.)

De todos modos, aquí hay un intento de aplicación actual de sus especificaciones. Esto simplemente selecciona la primera de nada después de la Consulta línea:


Código:
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

Esta salió un poco más monstruoso de lo que me gustaría que fuera, pero quizá se puede usar como punto de partida.

(En retrospectiva, tal vez habría sido mejor utilizar un hash para hacer un seguimiento de los valores que ya están capturados, y no captura el hash si dice que ya tenemos el que estamos viendo. Empuje la captura de una serie que si la conservación el orden es importante.)

Editado por última época; al 04-27-2008 08:53 AM.. Motivo: Añadir / i pabellón para hacer caso omiso de caso se pongan en venta
  #3 (Enlace permanente)  
Old 04-29-2008
srsahu75 srsahu75 is offline
Usuario Registrado
  
 

Fecha: enero 2008
Puestos: 15
Hola,
Muchas gracias por la ayuda. El script es muy útil hasta 70% de mi necesidad. Voy a tratar de hacer algo para el resto de mi 30%.

Gracias
Con respecto
Satya
  #4 (Enlace permanente)  
Old 05-05-2008
srsahu75 srsahu75 is offline
Usuario Registrado
  
 

Fecha: enero 2008
Puestos: 15
Era querido,
Quiero que el guión debe tener el archivo de entrada como una variable, así como archivo de salida. Tengo dos archivos de texto: (1) Lista de carpetas en las que debe trabajar el guión (2) Lista de archivos de entrada en la que el script debería funcionar.
Debido a la falta de Perl He intentado sin éxito el conocimiento. En Shell script que uso:

en `i (gato countries.txt)»
hacer

para j en `(gato year.txt)»

hacer

para k en `(gato países / $ i / $ j)»

hacer



Misma manera quiero que la perl tomar la secuencia de comandos de entrada como variable de

Gracias
  #5 (Enlace permanente)  
Old 05-05-2008
época era is offline Forum Advisor  
Pastor de Gatos Inútil (en año sabático)
  
 

Fecha: marzo 2008
Ubicación: / hay / es / sólo / bin / sh
Puestos: 3.652
Como cuestión de estilo de código de shell, los paréntesis son completamente innecesarios, y cosas invertidas en obras mal si hay un nombre de archivo con espacios en ella.

No veo por qué no se puede utilizar ese script de shell para envolver la Perl código; no hay mucho que existe Perl hace mejor que la cáscara, con excepción de no tener que leer el archivo de una y otra vez (pero usted puede optimizar que en el script de shell, también). Pero de todos modos, aquí va. Me temo que esto es totalmente a prueba.


Código:
#!/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 (Enlace permanente)  
Old 05-07-2008
srsahu75 srsahu75 is offline
Usuario Registrado
  
 

Fecha: enero 2008
Puestos: 15
Muchas gracias por el código

Recuerdos
Closed Thread

Marcadores

Herramientas de hilo Buscar en este Hilo
Buscar en este Hilo:

Búsqueda avanzada
Modos de visualización Vota a este hilo
Vota a este hilo:

Normas de envío
puede que no nuevo puesto de hilos
puede que no enviar respuestas
puede que no enviar archivos adjuntos
puede que no editar sus puestos

Código BB es Encendido
Emoticones son Encendido
[IMG] código Encendido
Código HTML es Apagado
Trackbacks son Encendido
Pingbacks son Encendido
Refbacks son Encendido




Todas las horas son GMT -4. La hora es 01:36 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traducciones de idiomas Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Estudios
El UNIX y Linux Foros Contenido Copyright © 1993-2009. Todos los derechos Reserved.Ad Gestión por RedTyger

Las direcciones URL de contenido vBSEO 3.2.0