[bash] waarde uit bestand halen.

Pagina: 1
Acties:

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 02-02 15:07
volgens mij heel simpel iets, maar ik kom er niet uit.

ik heb hier een text bestand, en daar staat ergens de volgnede regel in:
code:
1
2
<a href="AdminMaintenance%26g2_navId%3Dx
9f517&amp;g2_authToken=sddsfds4224">Logout</a>


En nu gaat het mij om het stukje na "g2_authToken", om "sddsfds4224" dus.
deze wil ik graag in een variabele hebben, maarja mijn bash kenis komt nog niet zo ver.

veder dan
cat tmp.htm | grep "g2_authToken${var}$"
kwam ik niet.....

[ Voor 5% gewijzigd door GoVegan op 11-01-2007 01:22 ]


Verwijderd

Probeer eens:

code:
1
grep g2_authToken tmp.htm | awk -F = '{print $2}'

  • Semyon
  • Registratie: April 2001
  • Laatst online: 21:26
Je kan backticks gebruiken om iets in een variable te krijgen... bijv

code:
1
2
x=`ls`
echo $x


stopt het resultaat van een ls in de variable x.

Nu hoef je dus alleen een regel te bedenken die het juiste resultaat oplevert. Je kan zoals Rawplayer awk gebruiken, al moet je veld 3 hebben en niet 2 zoals hij suggereert... Ik zelf gebruik vaak cut

Eerst moeten we op het = teken knippen
code:
1
cut -d\= -f3


en dan op het " teken...

code:
1
cut -d\" -f 1


En dan alles aanelkaar plakken/pipen

De hele regel wordt dan iets als:
code:
1
2
3
x=`grep g2_authToken tmp.htm | cut -d\= -f3 | cut -d\" -f 1`

echo $x

[ Voor 7% gewijzigd door Semyon op 11-01-2007 05:33 ]

Only when it is dark enough, can you see the stars


  • Boudewijn
  • Registratie: Februari 2004
  • Niet online

Boudewijn

omdat het kan

het kan makkelijker.
als je nou eens dit doet:

een bestandje maken met de 2 waarden erin,
a="ABC"
b="BCD"

en dat dan gewoon in je eigen script sourct:
source <bestandje1>

ik neem althans aan dat je dit bedoelt ;)

Zaram module kopen voor je glasvezelaansluiting?


  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 02-02 15:07
Boudewijn schreef op donderdag 11 januari 2007 @ 09:55:
het kan makkelijker.
als je nou eens dit doet:

een bestandje maken met de 2 waarden erin,
a="ABC"
b="BCD"

en dat dan gewoon in je eigen script sourct:
source <bestandje1>

ik neem althans aan dat je dit bedoelt ;)
Het bestand is dus geen eigen bestand, kan dus ook niets aan die indeling doen.
het gehele bestand bestaat ook uit meerdere regels.

En de twee eerste reacties, daar ga ik vanavond even mee stoeien

  • GoVegan
  • Registratie: Juni 2002
  • Laatst online: 02-02 15:07
oke heb het voor elkaar, dit is het uiteindelijk geworden:
bedankt voor jullie reacties.


code:
1
2
3
REGELNR=`grep -n -m 1 'g2_authToken' tmp.htm | cut -d":" -f1`
LINE=`head -n $REGELNR tmp.htm | tail -n 1`
x=`grep -n -m 1 'g2_authToken' tmp.htm | awk -F = '{print $7}' | cut -d\" -f 1`

Verwijderd

Deze hier werkt ook (getest), de vorige had ik niet getest en was niet volledig.

code:
1
grep g2_authToken tmp.htm | awk -F = '{print $2}' | awk -F \" '{print $1}'
Pagina: 1