BASH: stuk van bestand

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Hey,

Ik moet een webpagina uitlezen maar alleen alle lijnen tussen 2 variable.
En ik raak er echt niet uit.... ben al de gehele dag bezig maar niets lukt
Het moet echt tussen 2 variable zijn vermits lijnnummers wel eens kunnen verschillen.

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 05-10 15:53

mace

Sapere Aude

Leg eens even wat duidelijker uit wat je wilt bereiken? Geef eens een voorbeeld?

Je verhaal is nu niet echt duidelijk.

Ik vermoed iets richting een heredoc maar ik weet het niet zeker.

Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Wel dit is een stuk van het bestand dat belangrijk is voor mij.
alleen het stuk tussen session en single is van belang
Ik heb alleen ip port en de kolom ms_s nodig want dit geeft mij performatie data weer

het probleem is dat het mogelijk is dat er servers of instances tussen uit vallen dus het checken tussen 2 lijnnummers is niet mogelijk... :-(


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
... nog heel wat rommel

session:           server     hash    tries     resp   uptime     last    ms_s    ms_f     BOS     WFS
  0     10.25.22.169:10954 4a6b8c8f     2607     2607     1079        0     238     288   0.210   0.210
  1     10.25.22.169:11954 94eb7078     2144     2144     1079        2     262     374   0.162   0.162
  2     10.25.22.170:10954 1359c9c2     2211     2211     1079        1     570     386   0.157   0.157
  3     10.25.22.170:11954 cdd93535     2287     2287     1079        1     275     335   0.181   0.181
  4     10.25.22.171:10954 b52ec276     2415     2415     1079        0     421     396   0.153   0.153
  5     10.25.22.171:11954 6bae3e81     2308     2308     1079        0     423     438   0.138   0.138

single:            server     hash    tries     resp   uptime     last    ms_s    ms_f     BOS     WFS
  0     10.25.22.169:10954 4a6b8c8f        8        8     1079      380       4       5   0.210   0.210
  1     10.25.22.169:11954 94eb7078        6        6     1079      267       8       7   0.164   0.164
  2     10.25.22.170:10954 1359c9c2       11       11     1079      321      20       9   0.118   0.118
  3     10.25.22.170:11954 cdd93535        7        7     1079      323      34      10   0.113   0.113
  4     10.25.22.171:10954 b52ec276        9        9     1079      260      22       8   0.135   0.135
  5     10.25.22.171:11954 6bae3e81       11       11     1079      201       2       4   0.259   0.259

.... nog heel wat rommel

Because Great minds Think alike


Acties:
  • 0 Henk 'm!

  • u_nix_we_all
  • Registratie: Augustus 2002
  • Niet online
Is vast en zeker met een awk statement wel uit te vragen, maar dat zou ik zo niet weten.

Wat je zou kunnen doen (omslachtig) is:
Pagina ophalen, converteer naar tekst
Met grep en wc de lengte van de file en regelnummers van je markeringen bepalen.
Met head en tail het juiste stuk ertussenuit knippen.
Met cut de juiste kolommen eruit knippen.

[ Voor 6% gewijzigd door u_nix_we_all op 12-01-2010 16:52 ]

You don't need a parachute to go skydiving. You need a parachute to go skydiving twice.


Acties:
  • 0 Henk 'm!

  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

#!/bin/bash
PRINT=0;
while read i;
do
    if [ "$( echo "$i"|grep "single:" )" != "" ];
    then
        PRINT=0;
    fi;
    
    if [ $PRINT == 1 ]; 
    then 
        echo $i; 
    fi
    
    if [ "$( echo "$i"|grep "session:" )" != "" ];
    then
        PRINT=1;
    fi;
done


als je dit in een filetje stopt kun je je output er gewoon heen pipen, dan krijg je in ieder geval alleen de tekst tussen "session" en "single"

oprecht vertrouwen wordt nooit geschaad


Acties:
  • 0 Henk 'm!

  • TwOkkie
  • Registratie: April 2006
  • Laatst online: 00:38

TwOkkie

Tweakin' Okkie

Doet dit misschien wat je wil:

 sed -ne /session/,/single/p < bron.txt 


of anders:

 sed -e 1,/session/d -e /single/,\$d < bron.txt 


Of wil je een oplossing strict binnen bash?

[ Voor 6% gewijzigd door TwOkkie op 12-01-2010 17:03 ]

[J|O|R] <- .signature.gz


Acties:
  • 0 Henk 'm!

  • mace
  • Registratie: Juni 2003
  • Laatst online: 05-10 15:53

mace

Sapere Aude

mja, of je nou sed of grep gebruikt, het is beiden buiten bash.

Ik zou zelf AWK gebruiken.

Acties:
  • 0 Henk 'm!

  • djack
  • Registratie: September 2002
  • Laatst online: 11-11-2024
Thanks thanks thanks ;-)

Because Great minds Think alike

Pagina: 1