The UNIX and Linux Forums  

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
Appel d'un script perl à partir d'un script perl new2ss De programmation et de script Shell 6 05-24-2009 06:03 PM
Inclure script PERL dans le script shell unix Ganapati UNIX pour les nuls Questions et réponses 1 04-29-2008 01:18 PM
ici le document d'automatiser script perl qui appellent script hogger84 De programmation et de script Shell 3 10-22-2007 11:15 AM
Modifier le script Perl pour travailler avec txt - autorisations de script joangopan De programmation et de script Shell 1 09-13-2007 12:38 AM
Perl: Exécuter script perl dans le processus actuel vino De programmation et de script 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 Tools Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registered User
  
 

Join Date: Sep 2005
Messages: 27
Post Perl / Sed script aider

Salut tous,

J'aurais besoin de générer des scripts Oracle Inster à partir d'un format de feuille de calcul Excel comme suit:

Citation:
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 (ce qui n'indique pas de limite supérieure)
IDENTIFIER_NAME_SPACE:
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 2
Cette question doit être dépouillé comme suit:

Citation:
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)
VALEURS
(1, 'heAdmin', 1,1, 'NULL', 'ENCRYPTEDTEXT', 1);

REC 2: ..

REC 1, 2, etc REC sont les séparateurs de dossiers ...

Je crois que la perle de script peut être écrit pour cela ... rien d'utile sera d'une grande aide.

Merci à l'avance
Sabya
  #2 (permalink)  
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lieu: Варна, България / Milano, Italia
Posts: 2886
Quelque chose comme ceci:
(utilisation nawk / ou usr/xpg4/bin/awk sur Solaris)


Code:
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
  #3 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registered User
  
 

Join Date: Sep 2005
Messages: 27
Unhappy

Bonjour Radoulov,

Merci pour votre réponse et désolé pour mon manque de connaissances dans awk.

J'utilise solaris 10 - J'ai essayé comme suit:

J'ai créé un script: chk.awk

Citation:
#! / usr/xpg4/bin/awk
awk 'END (
printf fmt, c + +, tab, cols, les valeurs
)
NR \u003d\u003d 1 (
onglet \u003d 1 $
fmt \u003d "% d REC: INSERT INTO% s (% s) \ nVALUES \ n (% s) \ n"
suivant
)
/ ^ REC / & & (cols
printf fmt, c + +, tab, cols, les valeurs
cols \u003d ""
values \u003d ""
suivant
)
(
$ 2 \u003d $ 2 ~ / ^ [0-9] /? $ 2: $ 2 q q
cols \u003d cols? cols "," $ 1: $ 1
valeurs \u003d valeurs? valeurs "," $ 2: $ 2
) FS \u003d "*: *" q \u003d " '"
saisie de texte est stockée dans un fichier: qqq

Même si je suis appelant le script - Je reçois le message d'erreur suivant:

Citation:
mukher2 () / export/home/mukher2: awk-f chk.awk qqq
awk: syntax error, près de la ligne 2
awk: foin à proximité de la ligne 2

mukher2 () / export/home/mukher2:
S'il vous plaît pouvez-vous conseiller?
  #4 (permalink)  
Old 06-04-2008
unilover unilover is offline
Registered User
  
 

Join Date: Mar 2008
Lieu: Toronto, Canada
Posts: 66
Radoulov vous a donné la commande awk complet! (vous devriez être plus observent)

Dans votre formulaire d'exécution, prendre les awk et la seule offre dès le début et la fin de la commande dans votre fichier script.
  #5 (permalink)  
Old 06-04-2008
unilover unilover is offline
Registered User
  
 

Join Date: Mar 2008
Lieu: Toronto, Canada
Posts: 66
Aussi, supprimez le texte suivant:

FS \u003d "*: *" q \u003d " '"

chk.awk et de lancer votre commande en tant que:
Code:
awk -f chk.awk FS=" *: *" q="'" qqq
  #6 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registered User
  
 

Join Date: Sep 2005
Messages: 27
Merci Radoulov et Unilover

Fonctionne comme un charme.

Juste un petit pépin ... - Non pas tant la maîtrise de déboguer et de résoudre le problème ...

Tout (ou tous les autres documents) est sortie à l'exception du premier enregistrement.

La sortie est à venir comme:

Citation:
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, CREDENT IAL_TYPE, SRVC_SPECIFICATION_ID)
VALEURS
('',1, 'heAdmin', 1,1 ,'',' ENCRYPTEDTEXT ', 1);
Considérant qu'il convient de: (seulement les éléments marqués en rouge doivent être supprimés)

Citation:
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)
VALEURS
(1, 'heAdmin', 1,1 ,'',' ENCRYPTEDTEXT ', 1);


Autres que le premier record - tous les autres dossiers à venir sont tout à fait bien.

Merci encore,
Sabya
  #7 (permalink)  
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is online now Forum Staff  
addict
  
 

Join Date: Jan 2007
Lieu: Варна, България / Milano, Italia
Posts: 2886
Changer le script comme ceci:

Code:
#! /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
  }
Et invoquez-le comme ceci:

Code:
./script datafile
Closed Thread

Bookmarks

Tags
solaris

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:48 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