hjelpe xml - The UNIX og Linux Forums
The UNIX and Linux Forums  


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.

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 10-07-2008
uwork72 uwork72 is offline
Registrert bruker
  
 

Bli Dato: Aug 2008
Innlegg: 32
hjelpe xml

Gruppe,


Code:
$ cat 2233
12236 ID2
12239 ID3

Please guide me to construct the following XML from the above input.


<Comp>
        <main>
                <hlp fS="12236" eS="12237">
                        <std no="2233" />
                        <id="ID2"/>
                </hlp>
                <hlp fS="12239" eS="12240">
                        <std no="2233" />
                        <id="ID3"/>
                </hlp>
        </main>
</Comp>

** eS is +1 of fS value
** std no is the file name

  #2 (permalink)  
Old 10-07-2008
æra era is offline Forum Advisor  
Herder av Useless Cats (På Sabbatical)
  
 

Bli Date: Mar 2008
Sted: / det / er / bare / bin / sh
Innlegg: 3652
Hva har du prøvd, hvilke deler er det du har problemer med? Har du en preferanse for en bestemt implementering språk?

(Er det ikke en TAD moronic å ha et felt verdien som alltid er et annet felt verdi pluss en?)
  #3 (permalink)  
Old 10-07-2008
summer_cherry summer_cherry is offline Forum Advisor  
Registrert bruker
  
 

Bli Dato: juni 2007
Sted: Beijing Kina
Innlegg: 1089
perl

hi prøve nedenfor perl script
sier skriptet heter a.pl, under kommando kan adresse problemet.

Sitat:
perl a.pl 2233


Code:
format STDOUT_TOP =
<Comp>
        <main>
.
format STDOUT =
		<hlp fs="@<<<<" es="@<<<<">
		$text1     $text2  
			<std no="@<<<"/>
			$text3
			<id="@<<"/>
			$text4
		</hlp>
.
$file=shift;
open(FH,"<$file") or die "Can not open file";
while(<FH>){
	@arr=split(" ",$_);
	$text1=$arr[0];
	$text2=$arr[0]+1;
	$text3=$file;
	$text4=$arr[1];
	write;
}
print "        </main>\n";
print "</Comp>\n";
close(FH);

  #4 (permalink)  
Old 10-07-2008
uwork72 uwork72 is offline
Registrert bruker
  
 

Bli Dato: Aug 2008
Innlegg: 32
Era, takk for svar. Jeg prøvde bare én oppføring i inndatafilen; noe sånt


Code:
....
FILE=$1
fS=$(awk '{print $1}' $FILE)
((eS=fS+1))

echo "<Comp>" >> myxml
...
...

Men jeg er ikke i stand til å gjøre det samme hvis num oppføringer i inndatafilen i mer enn 1. Please help.
  #5 (permalink)  
Old 10-09-2008
uwork72 uwork72 is offline
Registrert bruker
  
 

Bli Dato: Aug 2008
Innlegg: 32
cfajohnson, som fungerte helt greit for meg. Takk.
  #6 (permalink)  
Old 10-07-2008
cfajohnson's Avatar
cfajohnson cfajohnson is offline Forum Advisor  
Shell programmerer, forfatter
  
 

Bli Date: Mar 2007
Bosted: Toronto, Canada
Innlegg: 2362
Sitat:
Originally Posted by uwork72 View Post
Gruppe,


Code:
$ cat 2233
12236 ID2
12239 ID3

Please guide me to construct the following XML from the above input.


<Comp>
        <main>
                <hlp fS="12236" eS="12237">
                        <std no="2233" />
                        <id="ID2"/>
                </hlp>
                <hlp fS="12239" eS="12240">
                        <std no="2233" />
                        <id="ID3"/>
                </hlp>
        </main>
</Comp>

** eS is +1 of fS value
** std no is the file name

Dette gjør hva du ba om:

Code:
file=2233
{
 read num1 id1
 read num2 id2
} < "$file"
fmt='<Comp>
        <main>
                <hlp fS="%d" eS="%d">
                        <std no="%d" />
                        <id="%s"/>
                </hlp>
                <hlp fS="%d" eS="%d">
                        <std no="%d" />
                        <id="%s"/>
                </hlp>
        </main>
</Comp>'

printf "%fmt\n" "$num1" "$(( $num1 + 1 ))" "$file" "$id1" \
                "$num2" "$(( $num3 + 1 ))" "$file" "$id2"

Mer trolig, det du ønsker er:


Code:
file=2233
head='<Comp>
        <main>'
fmt='                <hlp fS="%d" eS="%d">
                        <std no="%d" />
                        <id="%s"/>
                </hlp>
'

tail='        </main>
</Comp>'

{
 printf "%s\n" "$head"
 while read nnum id
 do
   printf "$fmt" "$num" "$(( $num + 1 ))" "$file" "$id"
 done < "$file"
 printf "%s\n" "$tail"
} > NEWFILE


## (untested)

Closed Thread

Hugseliste

Tags
perl, perl skiftarbeid, skifte, shift perl

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 10:36.


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