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 Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
Вызов Perl скрипта из Perl скрипта new2ss Shell программирование и сценарии 6 05-24-2009 06:03 PM
Включите PERL сценария в сценарий оболочки Unix ganapati UNIX для чайников Вопросы И Ответы 1 04-29-2008 01:18 PM
Здесь документа автоматизировать Perl-скрипт, вызов скрипта hogger84 Shell программирование и сценарии 3 10-22-2007 11:15 AM
Изменить Perl скрипт для работы с TXT - Разрешения сценарий joangopan Shell программирование и сценарии 1 09-13-2007 12:38 AM
Perl: Perl-скрипт запустить в текущем процессе Вино Shell программирование и сценарии 10 12-09-2005 10:45 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 06-04-2008
sabyasm sabyasm is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2005
Сообщений: 27
Post Perl / Sed скрипт поможет

Привет Все,

Я должен генерировать сценарии Oracle Inster из электронных таблиц Excel отформатирован следующим образом:

Цитата:
SRVC_ROLE_SPECIFICATION
REC 1
SRVC_ROLE_SPEC_ID : 1
SRVC_ROLE_TYPE : HeAdmin
MIN_NUMBER_ALLOWED : 1
MAX_NUMBER_ALLOWED : 1
IDENTIFIER_NAME_SPACE : NULL
CREDENTIAL_TYPE : ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID : 1
REC 2
SRVC_ROLE_SPEC_ID: 2
SRVC_ROLE_TYPE: emailLite
MIN_NUMBER_ALLOWED: 1
MAX_NUMBER_ALLOWED: 10
IDENTIFIER_NAME_SPACE:
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 1
REC 3
SRVC_ROLE_SPEC_ID: 3
SRVC_ROLE_TYPE: hostopiaAdmin
MIN_NUMBER_ALLOWED: 1
MAX_NUMBER_ALLOWED: 1
IDENTIFIER_NAME_SPACE:
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 2
REC 4
SRVC_ROLE_SPEC_ID: 4
SRVC_ROLE_TYPE: voicemailAdmin
MIN_NUMBER_ALLOWED: 1
MAX_NUMBER_ALLOWED: 1
IDENTIFIER_NAME_SPACE:?
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 2
REC 5
SRVC_ROLE_SPEC_ID: 5
SRVC_ROLE_TYPE: voicemailUser
MIN_NUMBER_ALLOWED: 1
MAX_NUMBER_ALLOWED: NULL (это не указывает на верхний предел)
IDENTIFIER_NAME_SPACE:
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 2
Это должен быть раздел следующим образом:

Цитата:
REC 1: INSERT INTO SRVC_ROLE_SPECIFICATION (SRVC_ROLE_SPEC_ID, SRVC_ROLE_TYPE, MIN_NUMBER_ALLOWED, MIN_NUMBER_ALLOWED, MAX_NUMBER_ALLOWED, IDENTIFIER_NAME_SPACE, CREDENTIAL_TYPE, SRVC_SPECIFICATION_ID)
VALUES
(1, 'heAdmin', 1,1, 'NULL', 'ENCRYPTEDTEXT', 1);

REC 2: ..

1 РЭЦ, РЭЦ 2 и т.д., разделители из записей ...

Я считаю, жемчужина сценария могут быть написаны для этого ... ничего полезного будет большим подспорьем.

Спасибо заранее
Sabya
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
наркоман
  
 

Регистрация: Январь 2007
Местоположение: Варна, България / Милан, Италия
Сообщения: 2875
То вроде этого:
(использование nawk / или usr/xpg4/bin/awk по Solaris)


Код:
awk 'END { 
  printf fmt, ++c, tab, cols, values 
  }
NR == 1 { 
  tab = $1 
  fmt = "REC %d: INSERT INTO %s(%s)\nVALUES\n(%s);\n" 
  next 
  }
/^REC/ && cols { 
  printf fmt, ++c, tab, cols, values 
  cols = "" 
  values = "" 
  next 
  } 
{ 
  $2 = $2 ~ /^[0-9]/ ? $2 : q $2 q 
  cols = cols ? cols "," $1 : $1 
  values = values ? values "," $2 : $2 
  }' FS=" *: *" q="'" input
Old 06-04-2008
sabyasm sabyasm is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2005
Сообщений: 27
Unhappy

Здравствуйте Radoulov,

Спасибо за Ваш ответ и извините за мое отсутствие знаний в AWK.

Я использую Solaris 10 - я попытался следующим образом:

Я создал сценарий: chk.awk

Цитата:
#! / usr/xpg4/bin/awk
AWK 'END (
printf FMT, C + +, вкладка, колонки, ценности
)
NR \u003d\u003d 1 (
вкладка \u003d $ 1
FMT \u003d "REC% D: INSERT INTO% S (% S) \ nVALUES \ N (% S); \ N"
следующий
)
/ ^ REC / И И столбик (
printf FMT, C + +, вкладка, колонки, ценности
колонки \u003d ""
значения \u003d ""
следующий
)
(
$ 2 \u003d $ 2 ~ / ^ [0-9] /? $ 2: Q $ 2 Q
колонки \u003d колонки? столбик "," $ 1: $ 1
\u003d значения ценностей? ценностей "," $ 2: $ 2
) 'FS \u003d "*: *" Q \u003d ""
ввод текста хранится в файле: QQQ

Хотя я вызове сценария - я получаю следующую ошибку:

Цитата:
mukher2 () / export/home/mukher2: AWK-F chk.awk QQQ
AWK: синтаксис ошибка вблизи линии 2
AWK: вовлечение в ближайшем линия 2

mukher2 () / export/home/mukher2:
Пожалуйста, вы можете сообщить?
Old 06-04-2008
unilover unilover is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2008
Место проведения: Торонто, Канада
Сообщений: 66
Radoulov дал вам полную AWK команду!! (Вы должны быть более observent)

В вашей формы исполнения, вынуть AWK и одну цитату из приступить И конца команду в ваш скрипт-файл.
Old 06-04-2008
unilover unilover is offline
Зарегистрированный пользователь
  
 

Регистрация: Mar 2008
Место проведения: Торонто, Канада
Сообщений: 66
Кроме того, удалите следующие:

FS \u003d "*: *" Q \u003d ""

От chk.awk и запустить ваши команды, как:
Код:
awk -f chk.awk FS=" *: *" q="'" qqq
Old 06-04-2008
sabyasm sabyasm is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2005
Сообщений: 27
Благодаря Radoulov и Unilover

Работает как обаяние.

Просто небольшой сбой ... - Не столько владеть для отладки и устранения проблемы ...

Все (все остальные записи) выходит за исключением первой записи.

Вывод идет так:

Цитата:
REC 1: INSERT INTO SRVC_ROLE_SPECIFICATION (REC 1,SRVC_ROLE_SPEC_ID, SRVC_ROLE_TYPE, MIN_NUMBER_ALLOWED, MAX_NUMBER_ALLOWED, IDENTIFIER_NAME_SPACE, доверчивый IAL_TYPE, SRVC_SPECIFICATION_ID)
VALUES
('',1, 'heAdmin', 1,1 ,'',' ENCRYPTEDTEXT ', 1);
В то время она должна быть: (только элементы, отмеченные красным цветом должен быть удален)

Цитата:
REC 1: INSERT INTO SRVC_ROLE_SPECIFICATION (SRVC_ROLE_SPEC_ID, SRVC_ROLE_TYPE, MIN_NUMBER_ALLOWED, MAX_NUMBER_ALLOWED, IDENT IFIER_NAME_SPACE, CREDENTIAL_TYPE, SRVC_SPECIFICATION_ID)
VALUES
(1, 'heAdmin', 1,1 ,'',' ENCRYPTEDTEXT ', 1);


Кроме первой записи - все остальные отчеты идут отлично.

Еще раз спасибо,
Sabya
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
наркоман
  
 

Регистрация: Январь 2007
Местоположение: Варна, България / Милан, Италия
Сообщения: 2875
Измените скрипт так:

Код:
#! /usr/xpg4/bin/awk -f

END {
  printf fmt, ++c, tab, cols, values
  }
NR == 1 {
  tab = $1
  fmt = "REC %d: INSERT INTO %s(%s)\nVALUES\n(%s);\n"
  FS = " *: *"
  q = "'"
  next
  }
/^REC/ && cols {
  printf fmt, ++c, tab, cols, values
  cols = ""
  values = ""
  next
  }
{
  $2 = $2 ~ /^[0-9]/ ? $2 : q $2 q
  cols = cols ? cols "," $1 : $1
  values = values ? values "," $2 : $2
  }
И ссылаться на что-нибудь типа этого:

Код:
./script datafile
Closed Thread

Закладки

Теги
Solaris

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

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

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

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




Часовой пояс GMT -4. Текущее время 04:16 PM.


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