The UNIX and Linux Forums  

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här.

Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
Tråd Thread Starter Forum Svar Senaste Inlägg
Utvärdera XSL sheet data i Unix Dataformat ravijunghare UNIX for Dummies Frågor & Svar 1 11-07-2008 09:32
Behöver du hjälp för att lägga till tre nya kolumner i befintlig fil från fatching data från fil Sandeep_Malik Shell-programmering och Skript 36 09-17-2008 06:12
Extrahera data från textfil som grundar sig på konfiguration anges i konfigureringsfil suparnbector Shell-programmering och Skript 3 08-10-2007 03:25
Post Shell programmering: Fråga om källan en fil och läsa data från filen ccwq Shell-programmering och Skript 3 08-04-2007 11:28
Använda loop läsa en fil att hämta data från databasen. Sonu4lov Shell-programmering och Skript 1 01-19-2007 03:38

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 denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 12-03-2008
naughty21 naughty21 is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 16
Hur får man data från en tagg i XML-fil

Hej
Jag har en XML-fil där data hämtas från en relationsdatabas tabellen och kolumnen namn taggarna i xml-fil som visas nedan.

<State> FN </ staten> <Zip/> <CompanyName/><EmailAddress>FDF@gmail.COM</ Epostadress><PromoType> OKÄND </ PromoType> </ Befordran> </ PromotionList <State> FN </ staten> <Zip/> <CompanyName/><EmailAddress>zd4946@gmail.com</ Epostadress>

vad jag behöver göra är att kontrollera om uppgifterna i mellan taggarna som är i fetstil är giltigt eller inte ... innebär att kontrollera om det är en e-postadress eller inte ... att kontrollera detta behöver jag för att visa informationen i mellan dessa taggar.

och måste finna längden på den data som ligger i mellan taggen ... betyder längd FDF@gmail.COM

för detta behöver jag för att få data från xml-fil där <EmailAddress> </ Epostadress> taggen är närvarande.



Förlåt om det redan bett ... Jag kollade men jag gjorde få Exatly matchande resultat för mina krav

någon hjälp i det här ... Im detta i Korn shell

Senast redigerad av naughty21; 12-04-2008 vid 01:51..
  #2 (permalänk)  
Old 12-03-2008
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Inlägg: 205
Hej,

Jag skulle försöka extrahera e-post direkt. För mig är det här fungerar med ditt urval:


Kod:
email=($(grep -o "[0-9A-Za-z]\+@[0-9A-Za-z]\+\.[A-Za-z]\{2,3\}" file))

Detta skriver alla mönster, och endast dessa mönster, som matchar de regexp
i kedjan email.


Kod:
echo ${#email[0]}

Ger dig längden på den första delen. Utan "#" det kommer att ge
du posten i position 0.

HTH Chris
  #3 (permalänk)  
Old 12-03-2008
naughty21 naughty21 is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 16
chris tack för ditt svar


men
när im försökt med under ett


Kod:
email=($(grep -o "[0-9A-Za-z]\+@[0-9A-Za-z]\+\.[A-Za-z]\{2,3\}" 456))

im getting this error 

ksh: 0403-057 Syntax error: `(' is not expected.



när im försökt med under ett

Kod:
email=$(grep -o "[0-9A-Za-z]\+@[0-9A-Za-z]\+\.[A-Za-z]\{2,3\}" 456)

im getting error like this 

grep: Not a recognized flag: o
Usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwy] [-p[parasep]] -e pattern_list...
        [-f pattern_file...] [file...]
Usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwy] [-p[parasep]] [-e pattern_list...]
        -f pattern_file... [file...]
Usage: grep [-E|-F] [-c|-l|-q] [-insvxbhwy] [-p[parasep]] pattern_list [file...]

någon annan sggestions
  #4 (permalänk)  
Old 12-03-2008
Christoph Spohr Christoph Spohr is offline
Registered User
  
 

Join Date: Sep 2008
Inlägg: 205
Ingen överraskning du använder ksh. Denna lösning fungerar bara i bash eller zsh.
Med ksh Jag kan inte hjälpa dig. Men det ska vara enkelt. Just google för Arrays
i ksh. $(...) Köra följande kommando i en subshell. (...) Sätter
saker inne i en matris. Kanske du kan ersätta (...) av
`...` (Backticks). Men jag vet inte.

Förmodligen kommer du att behöva justera regexp också. Nu kommer det inte
Match mail med prickar, understreck, bindestreck etc.
  #5 (permalänk)  
Old 12-03-2008
naughty21 naughty21 is offline
Registered User
  
 

Join Date: juni 2008
Inlägg: 16
Citat:
Ursprungligen postat av Christoph Spohr View Post
Ingen överraskning du använder ksh. Denna lösning fungerar bara i bash eller zsh.
Med ksh Jag kan inte hjälpa dig. Men det ska vara enkelt. Just google för Arrays
i ksh. $(...) Köra följande kommando i en subshell. (...) Sätter
saker inne i en matris. Kanske du kan ersätta (...) av
`...` (Backticks). Men jag vet inte.

Förmodligen kommer du att behöva justera regexp också. Nu kommer det inte
Match mail med prickar, understreck, bindestreck etc.
Jag fick svar, men fungerar med 1:a förekomsten av märket bara


Kod:
awk -F '</?EmailAddress>' '{print $2}' 456.xml

men jag behöver flera gånger .... innebär e-postadress taggen finns flera gånger i filen ...
så behovet av att kontrollera hela xml-fil till e-postadress och få dem varhelst <EmailAddress> </ Epostadress> taggen är närvarande.

Senast redigerad av naughty21; 12-03-2008 vid 05:07..
  #6 (permalänk)  
Old 12-04-2008
samshaw samshaw is offline
Registered User
  
 

Join Date: Dec 2008
Inlägg: 16
Re: skriva värden i XML-taggar i kedjor

Hej Alla,

Hoppas allt är bra. Jag använder Bourne Shell (sh). Jag har denna enkla XML-struktur (det är väl definierade och det är hur detta fasta strukturen kommer att vara). Den exakta provet enligt följande (Det kommer alltid att finnas ett värde per tag):

<Users>
<host>
<hostAddress> 180.144.226.47 </ hostAddress>
<användarnamn> pwdfe </ username>
<lösenord> hjitre </ password>
<instanceCount> 2 </ instanceCount>
</ Host>
<host>
<hostAddress> 180.144.226.87 </ hostAddress>
<användarnamn> trrrer </ username>
<lösenord> jhjjhhj </ password>
<instanceCount> 3 </ instanceCount>
</ Host>
<host>
<hostAddress> 180.455.226.87 </ hostAddress>
<användarnamn> wewqw </ username>
<lösenord> dfsdfd </ password>
<instanceCount> 3 </ instanceCount>
</ Host>
</ Användare>
-------------------------------------------------- --------------------

Nu vill jag skapa en matris med endast de värden i XML-taggar. För t.ex. H_ARRAY (180 .144.226.47 "," 180 .144.226.87 "," 180 .144.226.87 '). Då jag går igenom trodde värdena array därefter. Jag är nybörjare till Shell scripting och speciellt "SED"Kommando som efter upprepade försök inte kunde förstå. Skulle uppskatta din hjälp. Låt mig veta om jag missat något,


H_ARRAY \u003d ( `echo $ (hostAddress))
U_ARRAY \u003d ( `echo $ (användarnamn)")
P_ARRAY \u003d ( `echo $ (lösenord)")
I_ARRAY \u003d ( `echo $ (instanceCount))

Tack,
Sam
  #7 (permalänk)  
Old 12-04-2008
dennis.jacob dennis.jacob is offline Forum Advisor  
dj - den studerande
  
 

Join Date: februari 2007
Ort: Singapore / Bangalore / Cochin
Inlägg: 611
Prova den här snabba approch:

Kod:
sed 's/>/\n>/g' filename | sed 's/>\([A-Za-z0-9]*@[A-Za-z0-9]*\.[A-Za-z0-9]*\)<.*/\1/' | sed '/@/!d'

Closed Thread

Komihåglista

Taggar
data, söka, shell script, shell scripting, tagg, UNIX-skript, UNIX scripting basics, xml

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 10:23.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0