The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Aufruf eines Perl-Skript von einem Perl-Skript new2ss Shell Programmierung und Scripting 6 05-24-2009 05:03 PM
Perl-Skript mit in der Unix-Shell-Skript Ganapati UNIX for Dummies Questions & Answers 1 04-29-2008 12:18 PM
hier Dokument zu automatisieren, Perl-Skript, dass Call-Skript hogger84 Shell Programmierung und Scripting 3 10-22-2007 10:15 AM
Ändern Perl-Skript, mit txt - Berechtigungen Skript joangopan Shell Programmierung und Scripting 1 09-12-2007 11:38 PM
Perl: Führen Sie ein Perl-Script, in den laufenden Prozess vino Shell Programmierung und Scripting 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 Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registrierte Nutzer
  
 

Join Date: Sep 2005
Beiträge: 27
Post Perl / Sed-Skript helfen,

Hi All,

Ich müsste, um Oracle-Skripte Inster aus einer Excel-Tabelle wie folgt formatiert:

Zitat:
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 (dies bedeutet, dass keine Obergrenze)
IDENTIFIER_NAME_SPACE:
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 2
Dies muss allerdings wie folgt:

Zitat:
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: ..

REC 1, REC 2 usw. sind die Separatoren der Rekorde ...

Ich glaube, eine Perle Skript geschrieben werden können für dieses ... etwas Sinnvolles wird eine große Hilfe.

Vielen Dank im Voraus
Sabya
  #2 (permalink)  
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Beiträge: 2859
Etwa so:
(Verwendung nawk oder / usr/xpg4/bin/awk auf 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
Registrierte Nutzer
  
 

Join Date: Sep 2005
Beiträge: 27
Unhappy

Hallo Radoulov,

Vielen Dank für Ihre Antwort und bitten Sie um Entschuldigung für meine mangelnde Kenntnisse in awk.

Ich bin mit Solaris 10 - Ich habe versucht, wie folgt:

Ich habe ein Skript: chk.awk

Zitat:
#! / usr/xpg4/bin/awk
awk 'END (
printf fmt, C + +, Registerkarte, cols, Werte
)
NR \u003d\u003d 1 (
tab \u003d $ 1
fmt \u003d "% d REC: INSERT INTO% s (% s) \ nVALUES \ n (% s) \ n"
nächster
)
/ ^ REC / & & (cols
printf fmt, C + +, Registerkarte, cols, Werte
cols \u003d ""
Werte \u003d ""
nächster
)
(
$ 2 \u003d $ 2 ~ / ^ [0-9] /? $ 2: $ Q 2 Q
cols \u003d cols? cols "," $ 1: $ 1
Werte \u003d Werte? Werte "," $ 2: $ 2
) 'FS \u003d "*: *" q \u003d ""
Text ist in einer Datei gespeichert: qqq

Zwar fordere ich das Skript - Ich bekomme die folgende Fehlermeldung:

Zitat:
mukher2 () / export/home/mukher2: awk-f chk.awk qqq
awk: Syntaxfehler in der Nähe von Linie 2
awk: Rettung in der Nähe von Linie 2

mukher2 () / export/home/mukher2:
Bitte können Sie empfehlen?
  #4 (permalink)  
Old 06-04-2008
unilover unilover is offline
Registrierte Nutzer
  
 

Join Date: März 2008
Ort: Toronto, Kanada
Beiträge: 66
Radoulov hat Ihnen die komplette awk Befehl! (sollten Sie mehr observent)

In Ihrer Form der Ausführung, nehmen Sie die awk und die einheitliche Zitat aus dem Beginn und Ende des Befehls in der Skript-Datei.
  #5 (permalink)  
Old 06-04-2008
unilover unilover is offline
Registrierte Nutzer
  
 

Join Date: März 2008
Ort: Toronto, Kanada
Beiträge: 66
Also, entfernen Sie die folgenden:

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

chk.awk aus und führen Sie Ihr Kommando wie:
Code:
awk -f chk.awk FS=" *: *" q="'" qqq
  #6 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registrierte Nutzer
  
 

Join Date: Sep 2005
Beiträge: 27
Dank Radoulov und Unilover

Arbeiten wie ein Charme.

Nur ein kleiner Fehler ... - Nicht so sehr geübt zu debuggen und das Problem beheben ...

Alles (alle anderen Aufnahmen) ist aus, abgesehen von der ersten Aufnahme.

Die Ausgabe kommt wie:

Zitat:
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)
VALUES
('',1, 'heAdmin', 1,1 ,'',' ENCRYPTEDTEXT ', 1);
Es sollte: (nur die Elemente in rot markiert, entfernt werden muss)

Zitat:
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);


Andere als die erste Platte - alle anderen Datensätze kommen absolut in Ordnung.

Thanks again,
Sabya
  #7 (permalink)  
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Beiträge: 2859
Ändern Sie das Skript wie folgt aus:

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
  }
Und rufen Sie es wie folgt aus:

Code:
./script datafile
Closed Thread

Lesezeichen

Tags
solaris

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 02:15 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0