![]() |
|
|
|
|
|||||||
| Forums | Portal | Register | Forum Rules | FAQ | Contribute | Members List | Arcade | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts here. |
|
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| split string using separetor | rinku | Shell Programming and Scripting | 8 | 07-09-2008 01:52 AM |
| [KSH] Split string into array | piooooter | Shell Programming and Scripting | 3 | 09-01-2007 09:22 AM |
| split string help | senthilk615 | Shell Programming and Scripting | 4 | 03-27-2006 03:43 PM |
| split a string | gazingdown | Shell Programming and Scripting | 3 | 02-09-2006 02:34 AM |
| split a file at a specified string | jpl35 | Shell Programming and Scripting | 6 | 07-04-2002 08:41 AM |
|
|
Submit Tools | LinkBack | Thread Tools | Search this Thread | Display Modes |
|
#1
|
|||
|
|||
|
KSH split string into variables
Hello,
I am an intermediate scripter. I can usually find and adapt what I need by searching through previous postings, but I'm stumped. I have a string with the format "{Name1 Release1 Type1 Parent1} {Name2 Release2 Type2 Parent2}". It is being passed as an argument into a ksh script. I need to split this string into variables such as: Pkg1Name="Name1" Pkg1Release="Release1" Pkg1Type="Type1" Pkg1Parent="Parent1" Pkg2Name="Name2" Pkg2Release="Release2" Pkg2Type="Type2" Pkg2Parent="Parent2" Does anyone have any ideas how this may be accomplished, please? Thanks! D |
| Forum Sponsor | ||
|
|
|
#2
|
||||
|
||||
|
echo "{Name1 Release1 Type1 Parent1} {Name2 Release2 Type2 Parent2}" | nawk -f drd.awk
drd.awk: Code:
BEGIN {
FS="[{}]"
nt=split("Pkg%dName Pkg%dRelease Pkg%dType Pkg%dParent", tmplA, " ")
}
{
for(i=2; i<=NF; i+=2) {
n=split($i, a, " ")
for(j=1; j<=n; j++)
printf("%s=\"%s\"\n", sprintf(tmplA[j], i/2), a[j])
}
}
Last edited by vgersh99; 04-23-2006 at 01:35 PM. |
|
#3
|
|||
|
|||
|
Thanks. Sorry I wasn't clear. This parses the string like I want, but I need the variables to be available to the ksh script for processing later.
|
|
#4
|
||||
|
||||
|
Quote:
Code:
#!/bin/ksh
$(echo "{Name1 Release1 Type1 Parent1} {Name2 Release2 Type2 Parent2}" | nawk -f drd.awk)
|
|
#5
|
|||
|
|||
|
Excellent! That worked.
I also had to add "export" to the printf statement and removed the quotes surrounding the variable values. So my .awk file ended up: BEGIN { FS="[{}]" nt=split("Pkg%dName Pkg%dRelease Pkg%dType Pkg%dParent", tmplA, " ") } { for(i=2; i<=NF; i+=2) { n=split($i, a, " ") for(j=1; j<=n; j++) printf("export %s=%s\n", sprintf(tmplA[j], i/2), a[j]) } Thanks so much for your prompt help! D |
|
#6
|
||||
|
||||
|
Congratulations!
|
||||
| Google The UNIX and Linux Forums |