The UNIX and Linux Forums  
Hei og Velkommen fra USA til UNIX og Linux Forums! Takk for besøket og Delta i vårt globale samfunn.

Go Back   UNIX og Linux Forums > Top Forums > Shell programmering og Skripting
.
google unix.com



Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her.

Mer UNIX og Linux Forum Emner Du kan finne nyttig
Tråd Tråd startet Forum Svar Siste innlegg
Ringe en perl skript fra et perl script new2ss Shell programmering og Skripting 6 05-24-2009 05:03
Inkluder PERL skriptet med i unix shell script ganapati UNIX for Dummies Spørsmål og svar 1 04-29-2008 12:18
her dokumentet å automatisere perl skript som kaller script hogger84 Shell programmering og Skripting 3 10-22-2007 10:15
Modificar Perl-skript til å arbeide med txt - Tillatelser script joangopan Shell programmering og Skripting 1 09-12-2007 11:38
Perl: Kjør perl skript i den aktuelle prosessen Vino Shell programmering og Skripting 10 12-09-2005 10:45

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 Søk i denne tråden Rate Thread Visningsmoduser
  #1 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registrert bruker
  
 

Bli Dato: Sep 2005
Innlegg: 27
Post Perl / Sed script hjelp

Hei Alle,

Jeg måtte generere Oracle Inster skript fra et Excel-formatert regnearket som følger:

Sitat:
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 (dette indikerer ingen øvre grense)
IDENTIFIER_NAME_SPACE:
CREDENTIAL_TYPE: ENCRYPTEDTEXT
SRVC_SPECIFICATION_ID: 2
Dette må være avkledt som følger:

Sitat:
REC 1: setter inn 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)
VERDIER
(1, 'heAdmin', 1,1 "NULL", "ENCRYPTEDTEXT ', 1);

REC 2: ..

REC 1, REC 2 osv. er skilletegnene av postene ...

Jeg tror en perle script kan skrives på denne ... noe nyttig vil være til stor hjelp.

Takk på forhånd
Sabya
  #2 (permalink)  
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
stoffmisbruker
  
 

Bli Date: Jan 2007
Beliggenhet: Варна, България / Milano, Italia
Innlegg: 2860
For eksempel slik:
(bruk nawk eller / usr/xpg4/bin/awk 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
Registrert bruker
  
 

Bli Dato: Sep 2005
Innlegg: 27
Unhappy

Hei Radoulov,

Takk for svar og beklager for min mangel på kunnskap i awk.

Jeg bruker Solaris 10 - Jeg har prøvd som følger:

Jeg har laget et script: chk.awk

Sitat:
#! / usr/xpg4/bin/awk
awk 'END (
printf FMT, + + c, kategorien cols, verdier
)
NR \u003d\u003d 1 (
tab \u003d $ 1
FMT \u003d "REC% d: INSERT INTO% s (% s) \ nVALUES \ n (% s) \ n"
neste
)
/ ^ REC / & & cols (
printf FMT, + + c, kategorien cols, verdier
cols \u003d ""
verdier \u003d ""
neste
)
(
$ 2 \u003d $ 2 ~ / ^ [0-9] /? $ 2: q $ 2 q
cols \u003d cols? cols "," $ 1: $ 1
verdier \u003d verdier? verdier "," $ 2: $ 2
) "FS \u003d" *: * "q \u003d" "
input tekst lagres i en fil: QQQ

Mens jeg ringer skriptet - Jeg får følgende feilmelding:

Sitat:
(mukher2) / export/home/mukher2: awk-f chk.awk QQQ
awk: syntaksfeil nær linje 2
awk: bailing ut nær linje 2

(mukher2) / export/home/mukher2:
Vær kan du råd?
  #4 (permalink)  
Old 06-04-2008
unilover unilover is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Bosted: Toronto, Canada
Innlegg: 66
Radoulov har gitt deg den fullstendige awk kommando! (du må være mer observent)

I form av gjennomføring, ta ut awk og enkelt anførselstegn fra begynne og slutten av kommandoen i skriptet-fil.
  #5 (permalink)  
Old 06-04-2008
unilover unilover is offline
Registrert bruker
  
 

Bli Date: Mar 2008
Bosted: Toronto, Canada
Innlegg: 66
Også fjerne følgende:

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

fra chk.awk og kjøre en kommando som:
Code:
awk -f chk.awk FS=" *: *" q="'" qqq
  #6 (permalink)  
Old 06-04-2008
sabyasm sabyasm is offline
Registrert bruker
  
 

Bli Dato: Sep 2005
Innlegg: 27
Takk Radoulov og Unilover

Arbeider like en ynde.

Bare et lite problem ... - Ikke så mye dyktigere til å feilsøke og fikse problemet ...

Everything (alle andre poster) kommer ut unntatt den første posten.

Utdataene kommer ut:

Sitat:
REC 1: setter inn 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)
VERDIER
('',1 "heAdmin ', 1,1 ,'',' ENCRYPTEDTEXT', 1);
Mens det skal være: (bare elementene markert i rødt må fjernes)

Sitat:
REC 1: setter inn 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)
VERDIER
(1, 'heAdmin', 1,1 ,'',' ENCRYPTEDTEXT ', 1);


Annet enn den første posten - alle andre poster kommer helt fint.

Takk igjen,
Sabya
  #7 (permalink)  
Old 06-04-2008
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
stoffmisbruker
  
 

Bli Date: Jan 2007
Beliggenhet: Варна, България / Milano, Italia
Innlegg: 2860
Endre script som dette:

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
  }
Og bruker dette på følgende måte:

Code:
./script datafile
Closed Thread

Hugseliste

Tags
solaris

Thread Tools Søk i denne tråden
Søk i denne tråden:

Avansert søk
Visningsmoduser Ranger denne tråden
Ranger denne tråden:

Innleggsaktivitet Regler
Du kanskje ikke poste nye tråder
Du kanskje ikke poste svar
Du kanskje ikke post vedlegg
Du kanskje ikke redigere innleggene dine

BB-kode er
Smilefjes er
[IMG] koden
HTML-koden Av
Pingbacks er
Refbacks er




Alle klokkeslett er GMT -4. Nå er klokken 11:34.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX og Linux Forums Content Copyright © 1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant nettadresser av vBSEO 3.2.0