/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
læse sidste linie i en fil, med BASH
Fra : Ivar Madsen


Dato : 07-04-04 07:03

Jeg kan finde udaf at læse en fil linie for linie fra første til sidste, men
jeg har behov for at læse sidste linie, er der er smutvej, så man ikke behøves
at læse alle linierne, for kun at bruge den sidste?


--
Med venlig hilsen
Ivar Madsen


 
 
Morten Guldager (07-04-2004)
Kommentar
Fra : Morten Guldager


Dato : 07-04-04 07:22

Wed, 07 Apr 2004 at 06:03 GMT Ivar Madsen wrote
> Jeg kan finde udaf at læse en fil linie for linie fra første til sidste, men
> jeg har behov for at læse sidste linie, er der er smutvej, så man ikke behøves
> at læse alle linierne, for kun at bruge den sidste?

Hwa mæ'

tail -1


/Morten

Ivar Madsen (07-04-2004)
Kommentar
Fra : Ivar Madsen


Dato : 07-04-04 19:45

Morten Guldager skrev i -dk.edb.system.unix:

>> Jeg kan finde udaf at læse en fil linie for linie fra første til sidste,
>> men jeg har behov for at læse sidste linie, er der er smutvej, så man ikke
>> behøves at læse alle linierne, for kun at bruge den sidste?
> Hwa mæ'
> tail -1

Virker ikke, men tail -n 1 filnavn viser sidste 1 linie i en konsol, men når
filen ser ud som her

4 ed.dk

hvordan får jeg så indlæst 4 i en $linie og ed.dk i $url ?

jeg har prøvet med det samme

|$ tail -n 1 /home/ivar/.webupdate/url
|7 http://www.dmi.dk/dmi/index/danmark/et_doegns_udsigt/kbhnsj.htm
|$ read linie url < tail -n 1 /home/ivar/.webupdate/url
|bash: tail: No such file or directory
|$

Jeg havde formodet at read læste fra standard input, og at standard input kom
fra outputet af tail, men det virker ikke, hvordan gør man så?

--
Med venlig hilsen
Ivar Madsen


Peter Makholm (07-04-2004)
Kommentar
Fra : Peter Makholm


Dato : 07-04-04 20:04

Ivar Madsen <spam.usenet.im@milli.dk> writes:

> |$ tail -n 1 /home/ivar/.webupdate/url
> |7 http://www.dmi.dk/dmi/index/danmark/et_doegns_udsigt/kbhnsj.htm
> |$ read linie url < tail -n 1 /home/ivar/.webupdate/url
> |bash: tail: No such file or directory
> |$
>
> Jeg havde formodet at read læste fra standard input, og at standard input kom
> fra outputet af tail, men det virker ikke, hvordan gør man så?

read læser fra stdin og tail skriver til stdout, men 'cmd1 < cmd2'
sender ikke stdout fra kommandoen cmd2 til cmd1. '<' og '>' drejer sig
om filer, du skal bruge |.

--
Peter Makholm | Emacs is the only modern general-purpose
peter@makholm.net | operating system that doesn't multitask
http://hacking.dk |

Ivar Madsen (07-04-2004)
Kommentar
Fra : Ivar Madsen


Dato : 07-04-04 22:59

Peter Makholm skrev i -dk.edb.system.unix:

> read læser fra stdin og tail skriver til stdout, men 'cmd1 < cmd2'
> sender ikke stdout fra kommandoen cmd2 til cmd1. '<' og '>' drejer sig
> om filer, du skal bruge |.


Hmm. uanset hvordan jeg skriver det, så virker det ikke.
Jeg har skimmet¹ man / infosiderne for read og less, men ikke fundet nogen
parameter der skal på en af dem, har jeg overset noget?


¹ Mine begranset engelskkundskaber, og manglende tid her til aften, har sat
begransning på nærstudie af dem.



--
Med venlig hilsen
Ivar Madsen


Klaus Alexander Seis~ (07-04-2004)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 07-04-04 23:27

Ivar Madsen skrev:

>|$ tail -n 1 /home/ivar/.webupdate/url
>|7 http://www.dmi.dk/dmi/index/danmark/et_doegns_udsigt/kbhnsj.htm
>|$ read linie url < tail -n 1 /home/ivar/.webupdate/url
>|bash: tail: No such file or directory
>|$
>
> Jeg havde formodet at read læste fra standard input, og at standard
> input kom fra outputet af tail, men det virker ikke, hvordan gør man
> så?

$ tail -n 1 /home/ivar/.webupdate/url | read line url

--
Klaus Alexander Seistrup · Copenhagen · Denmark
http://www.magnetic-ink.dk/ · http://www.pnx.dk/

Ivar Madsen (08-04-2004)
Kommentar
Fra : Ivar Madsen


Dato : 08-04-04 06:41

Klaus Alexander Seistrup skrev i -dk.edb.system.unix:

> Ivar Madsen skrev:
>
>>|$ tail -n 1 /home/ivar/.webupdate/url
>>|7 http://www.dmi.dk/dmi/index/danmark/et_doegns_udsigt/kbhnsj.htm
>>|$ read linie url < tail -n 1 /home/ivar/.webupdate/url
>>|bash: tail: No such file or directory
>>|$
>>
>> Jeg havde formodet at read læste fra standard input, og at standard
>> input kom fra outputet af tail, men det virker ikke, hvordan gør man
>> så?
>
> $ tail -n 1 /home/ivar/.webupdate/url | read line url

,----[ /usr/local/bin/test3 ]
| #!/bin/bash
| tail -n 1 /home/ivar/.webupdate/url | read linie url
| echo linie nr er $linie
| echo urlen er $url
`----

Giver

|$ ./test3
|linie nr er
|urlen er
|$

--
Med venlig hilsen
Ivar Madsen


Klaus Alexander Seis~ (08-04-2004)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 08-04-04 13:25

Ivar Madsen skrev:

>> $ tail -n 1 /home/ivar/.webupdate/url | read line url
>
> ,----[ /usr/local/bin/test3 ]
>| #!/bin/bash
>| tail -n 1 /home/ivar/.webupdate/url | read linie url
>| echo linie nr er $linie
>| echo urlen er $url
> `----
>
> Giver
>
>|$ ./test3
>|linie nr er
>|urlen er
>|$

Ja, det er klart. Hvis du efterfølgende skal bruge variablene,
skal de kunne findes i samme sub-shell. Prøv fx

#v+

$ tail -n 1 ~ivar/.webupdate/url | while read linie url; do echo $linie; echo $url; done

#v-

--
Klaus Alexander Seistrup · Copenhagen · Denmark
http://www.magnetic-ink.dk/ · http://www.pnx.dk/

Søg
Reklame
Statistik
Spørgsmål : 177554
Tips : 31968
Nyheder : 719565
Indlæg : 6408852
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste