The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
регулярное выражение [^] iengca Shell программирование и сценарии 9 06-18-2008 10:45 AM
Необходимость регулярного выражения tony3101 Shell программирование и сценарии 4 06-05-2008 04:13 AM
регулярное выражение и AWK nickg UNIX для чайников Вопросы И Ответы 2 08-16-2007 06:23 PM
Регулярные выражения edog UNIX для чайников Вопросы И Ответы 5 12-04-2003 02:58 PM
Регулярные выражения + Aritmetical Выражение Z0mby Shell программирование и сценарии 2 05-21-2002 11: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 Оценить Thread Режимы дисплея
Old 05-24-2007
ynixon ynixon is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2007
Сообщений: 57
регулярное выражение через несколько строк

Я пытаюсь использовать регулярные выражения для определения команды, только что не слово "таблица" в нее. команда начинается с "создать стол", и заканчивается (с запятой)

Пример файла:
Код:
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) );
матч должны быть:
Код:
create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table 
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
HELP ME

Последний раз редактировалось ynixon; на 05-24-2007 12:02 PM..
Old 05-24-2007
aigles's Avatar
aigles aigles is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Apr 2004
Расположение: Бордо, Франция
Сообщения: 1423
Вы можете попробовать что-то вроде:
Код:
awk '
   BEGIN { 
      RS=ORS=";\n"
   }
   /create/ && ! /tablespace/ {
      sub(/^\n*/, "");
      print
   }
    ' inputfile
Жан-Пьер.
Old 05-24-2007
anbu23 anbu23 is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Mar 2006
Место проведения: Бангалор, Индия
Сообщения: 1398
Код:
awk -v RS=";\n" -v ORS=";\n" ' !/tablespace/ ' filename
Old 05-24-2007
ynixon ynixon is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2007
Сообщений: 57
Я хочу попробовать использовать только grep
Old 05-24-2007
drl's Avatar
ДРЛ drl is offline Forum Advisor  
Зарегистрированный пользователь
  
 

Регистрация: Apr 2007
Место проведения: Санкт-Пол, Миннесота США / BSD, CentOS, Debian, OS X, Solaris
Сообщений: 711
Привет.

Я думаю, что grep не крест строками, так что вам потребуется, чтобы сделать команды по каждой отдельной строке. Существует запись в моей человеком grep страница об использовании Perl регулярные выражения, но это не документированы. Определенный артикль AWK и Perl Сценарии могут воспользоваться настраиваемой запись границ.

Вот Perl quickie:
Код:
#!/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
И работает это на ваш образец, содержащийся в файле data1:
Код:
% ./s1

create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
С наилучшими пожеланиями ... Cheers, ДХО
Old 05-24-2007
ynixon ynixon is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2007
Сообщений: 57
Цитата:
Первоначально Послано ДРЛ
Привет.

Я думаю, что grep не крест строками, так что вам потребуется, чтобы сделать команды по каждой отдельной строке. Существует запись в моей человеком grep страница об использовании Perl регулярные выражения, но это не документированы. Определенный артикль AWK и Perl Сценарии могут воспользоваться настраиваемой запись границ.

Вот Perl quickie:
Код:
#!/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
И работает это на ваш образец, содержащийся в файле data1:
Код:
% ./s1

create table third
(
  BBL_CUSTOMER_NAME      VARCHAR2(32),
);
create table
forth
(
  BBL_CUSTOMER_NAME      VARCHAR2(32) );
С наилучшими пожеланиями ... Cheers, ДХО
простой и понятный
Old 05-24-2007
vgersh99's Avatar
vgersh99 vgersh99 is offline Forum Staff  
Модератор
  
 

Регистрация: Февраль 2005
Место: Boston, MA
Сообщения: 5122
Цитата:
Первоначально Послано ynixon
Я хочу попробовать использовать только grep
Почему это происходит?
Closed Thread

Закладки

Теги
Regex, регулярные выражения

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 12:54 AM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0