The UNIX and Linux Forums  
Bonjour et bienvenu par les États-Unis à la UNIX et Linux Forums! Merci de votre visite et vous joindre à notre communauté mondiale.

Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
expression régulière [^] iengca De programmation et de script Shell 9 06-18-2008 09:45 AM
Besoin d'une expression régulière tony3101 De programmation et de script Shell 4 06-05-2008 03:13 AM
expression régulière, et awk nickg UNIX pour les nuls Questions et réponses 2 08-16-2007 05:23 PM
Regular Expression edog UNIX pour les nuls Questions et réponses 5 12-04-2003 02:58 PM
Regular Expression + Expression Aritmetical Z0mby De programmation et de script Shell 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 Thread Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 05-24-2007
ynixon ynixon is offline
Registered User
  
 

Join Date: Mar 2007
Posts: 57
expression régulière à travers quelques lignes

Je tente d'utiliser des expressions régulières afin d'identifier uniquement les commandes qui n'ont pas le mot «table» en son sein. une commande commence par "create table" et se termine par, (virgule)

fichier d'exemple:
Code:
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) );
le match doit être:
Code:
create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table 
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
HELP ME

Dernière édition par ynixon; au 05.24.2007 11:02 AM..
  #2 (permalink)  
Old 05-24-2007
aigles's Avatar
Aigles aigles is offline Forum Advisor  
Registered User
  
 

Date d'inscription: avril 2004
Lieu: Bordeaux, France
Posts: 1,418
Vous pouvez essayer quelque chose comme ça:
Code:
awk '
   BEGIN { 
      RS=ORS=";\n"
   }
   /create/ && ! /tablespace/ {
      sub(/^\n*/, "");
      print
   }
    ' inputfile
Jean-Pierre.
  #3 (permalink)  
Old 05-24-2007
anbu23 anbu23 is offline Forum Advisor  
Registered User
  
 

Join Date: Mar 2006
Lieu: Bangalore, Inde
Posts: 1398
Code:
awk -v RS=";\n" -v ORS=";\n" ' !/tablespace/ ' filename
  #4 (permalink)  
Old 05-24-2007
ynixon ynixon is offline
Registered User
  
 

Join Date: Mar 2007
Posts: 57
Je voudrais seulement essayer d'utiliser grep
  #5 (permalink)  
Old 05-24-2007
drl's Avatar
DRL drl is offline Forum Advisor  
Registered User
  
 

Join Date: Apr 2007
Localisation: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Messages: 706
Salut.

Je pense que grep pas traverser la ligne, de sorte que vous devez placer vos commandes de chacun sur une seule ligne. Il ya une note dans mon man grep page sur l'utilisation de perl les expressions régulières, mais qu'il est sans-papiers. Le awk et perl les scripts peuvent faire usage de dossier réglable frontières.

Voici un perl quickie:
Code:
#!/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
Et cela marche sur votre échantillon contenue dans le fichier data1:
Code:
% ./s1

create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
Meilleurs voeux ... cheers, DRL
  #6 (permalink)  
Old 05-24-2007
ynixon ynixon is offline
Registered User
  
 

Join Date: Mar 2007
Posts: 57
Citation:
Posté par DRL
Salut.

Je pense que grep pas traverser la ligne, de sorte que vous devez placer vos commandes de chacun sur une seule ligne. Il ya une note dans mon man grep page sur l'utilisation de perl les expressions régulières, mais qu'il est sans-papiers. Le awk et perl les scripts peuvent faire usage de dossier réglable frontières.

Voici un perl quickie:
Code:
#!/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
Et cela marche sur votre échantillon contenue dans le fichier data1:
Code:
% ./s1

create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
Meilleurs voeux ... cheers, DRL
propre et simple
  #7 (permalink)  
Old 05-24-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Modérateur
  
 

Join Date: Feb 2005
Lieu: Boston, MA
Posts: 5119
Citation:
Posté par ynixon
Je voudrais seulement essayer d'utiliser grep
pourquoi est-ce?
Closed Thread

Bookmarks

Tags
regex, les expressions régulières

« Random | HTTP_HOST »
Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 08:01 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0