The UNIX and Linux Forums  
Hola y bienvenida de los Estados Unidos a la UNIX y Linux Foros! Gracias por su visita y formar parte de nuestra comunidad global.

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
expresión regular [^] iengca Programación de scripts de shell y 9 06-18-2008 09:45 AM
¿Necesita una expresión regular tony3101 Programación de scripts de shell y 4 06-05-2008 03:13 AM
expresión regular y awk nickg UNIX for Dummies Preguntas y Respuestas 2 08-16-2007 05:23 PM
Expresión regular edog UNIX for Dummies Preguntas y Respuestas 5 12-04-2003 02:58 PM
Expresiones regulares + Aritmetical Expresión Z0mby Programación de scripts de shell y 2 05-21-2002 10:59 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 vínculo Herramientas de hilo Buscar en este Hilo Tasa de Hilo Modos de visualización
  #1 (Enlace permanente)  
Old 05-24-2007
ynixon ynixon is offline
Usuario Registrado
  
 

Fecha: marzo 2007
Puestos: 57
expresión regular a través de algunas líneas

Estoy tratando de utilizar expresiones regulares para identificar sólo los comandos que no tiene la palabra "tablas" en su seno. comienza con un comando "CREATE TABLE" y termina con, (coma)

fichero de ejemplo:
Código:
create table first tablespace ;
create table second
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
a tablespace af
);
create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table 
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
el partido debe ser:
Código:
create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table 
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
ME AYUDA

Última edición por ynixon; al 05-24-2007 11:02 AM..
  #2 (Enlace permanente)  
Old 05-24-2007
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2004
Ubicación: Burdeos, Francia
Mensajes: 1.418
Usted puede intentar algo así:
Código:
awk '
   BEGIN { 
      RS=ORS=";\n"
   }
   /create/ && ! /tablespace/ {
      sub(/^\n*/, "");
      print
   }
    ' inputfile
Jean-Pierre.
  #3 (Enlace permanente)  
Old 05-24-2007
anbu23 anbu23 is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: marzo 2006
Lugar: Bangalore, India
Mensajes: 1.398
Código:
awk -v RS=";\n" -v ORS=";\n" ' !/tablespace/ ' filename
  #4 (Enlace permanente)  
Old 05-24-2007
ynixon ynixon is offline
Usuario Registrado
  
 

Fecha: marzo 2007
Puestos: 57
Me gustaría tratar de usar sólo grep
  #5 (Enlace permanente)  
Old 05-24-2007
drl's Avatar
DRL drl is offline Forum Advisor  
Usuario Registrado
  
 

Fecha: abril 2007
Ubicación: Saint Paul, MN EE.UU. / BSD, CentOS, Debian, OS X, Solaris
Puestos: 706
Hola.

Creo que grep no cruzar líneas nuevas, de modo que usted tendrá que colocar su cada comandos en una sola línea. Hay una nota en mi página man grep sobre el uso de perl expresiones regulares, sino que se trata de indocumentados. El awk y perl scripts pueden hacer uso de liquidarse registro límites.

Aquí hay una perl Quickie:
Código:
#!/bin/sh

# @(#) s1       Demonstrate perl quickie for unmatched string across lines.

FILE=${1-data1}

perl -wn -e 'BEGIN{$/=";"} print if not /tablespace/' $FILE

exit 0
Y en funcionamiento en esta muestra su figura en el archivo data1:
Código:
% ./s1

create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
Los mejores deseos ... cheers, DRL
  #6 (Enlace permanente)  
Old 05-24-2007
ynixon ynixon is offline
Usuario Registrado
  
 

Fecha: marzo 2007
Puestos: 57
Cita:
Publicado originalmente por DRL
Hola.

Creo que grep no cruzar líneas nuevas, de modo que usted tendrá que colocar su cada comandos en una sola línea. Hay una nota en mi página man grep sobre el uso de perl expresiones regulares, sino que se trata de indocumentados. El awk y perl scripts pueden hacer uso de liquidarse registro límites.

Aquí hay una perl Quickie:
Código:
#!/bin/sh

# @(#) s1       Demonstrate perl quickie for unmatched string across lines.

FILE=${1-data1}

perl -wn -e 'BEGIN{$/=";"} print if not /tablespace/' $FILE

exit 0
Y en funcionamiento en esta muestra su figura en el archivo data1:
Código:
% ./s1

create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
Los mejores deseos ... cheers, DRL
limpia y sencilla
  #7 (Enlace permanente)  
Old 05-24-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderador
  
 

Fecha: febrero 2005
Localización: Boston, MA
Mensajes: 5.119
Cita:
Publicado originalmente por ynixon
Me gustaría tratar de usar sólo grep
¿Por qué?
Closed Thread

Marcadores

Etiquetas
regex, expresiones regulares

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 04:03 AM.


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