|
| 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 (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/
| |
|
|