|
| unix programering Fra : Jesper Andersen |
Dato : 17-09-03 09:55 |
|
jeg skal finde linie antal i en fil og gemme dette tal som en variable.
dette er hvad jeg gør:
wc -l mellemvaerdi >$variable
dette kan dog ikke lade sig gøre dvs >$variable kan ikke lade sig gøre.
hvad gør jeg?
skal/kan jeg evt. bruge en anden funktion??
| |
Peter Makholm (17-09-2003)
| Kommentar Fra : Peter Makholm |
Dato : 17-09-03 09:59 |
|
"Jesper Andersen" <ja1977@yahoo.dk> writes:
> jeg skal finde linie antal i en fil og gemme dette tal som en variable.
> dette er hvad jeg gør:
>
> wc -l mellemvaerdi >$variable
VAR = `wc -l filnavn`
Bemærk at det er bagplinger og ikke almindelige plinger.
--
Peter Makholm | Emacs is the only modern general-purpose
peter@makholm.net | operating system that doesn't multitask
http://hacking.dk |
| |
Claus Alboege (17-09-2003)
| Kommentar Fra : Claus Alboege |
Dato : 17-09-03 10:13 |
|
Peter Makholm <peter@makholm.net> writes:
> "Jesper Andersen" <ja1977@yahoo.dk> writes:
>
>> jeg skal finde linie antal i en fil og gemme dette tal som en variable.
>> dette er hvad jeg gør:
>>
>> wc -l mellemvaerdi >$variable
>
> VAR = `wc -l filnavn`
^ ^
Uden mellemrum, vel?
% DATE = `date`; echo $DATE
bash: DATE: command not found
% DATE=`date`; echo $DATE
Wed Sep 17 11:12:19 CEST 2003
> Bemærk at det er bagplinger og ikke almindelige plinger.
/Claus A
| |
Jesper Andersen (17-09-2003)
| Kommentar Fra : Jesper Andersen |
Dato : 17-09-03 10:34 |
|
hvis jeg eksekverer følgende:
var='wc -l mellemvaerdi'
og skriver :
echo $var
får jeg følgende:
wc -l mellemvaerdi
??????
"Claus Alboege" <csa@csa-net.dk> wrote in message
news:20030917.111317097260500@csa-net.dk...
> Peter Makholm <peter@makholm.net> writes:
>
> > "Jesper Andersen" <ja1977@yahoo.dk> writes:
> >
> >> jeg skal finde linie antal i en fil og gemme dette tal som en variable.
> >> dette er hvad jeg gør:
> >>
> >> wc -l mellemvaerdi >$variable
> >
> > VAR = `wc -l filnavn`
> ^ ^
> Uden mellemrum, vel?
>
> % DATE = `date`; echo $DATE
> bash: DATE: command not found
>
> % DATE=`date`; echo $DATE
> Wed Sep 17 11:12:19 CEST 2003
>
> > Bemærk at det er bagplinger og ikke almindelige plinger.
>
>
> /Claus A
| |
Peter Jensen (17-09-2003)
| Kommentar Fra : Peter Jensen |
Dato : 17-09-03 10:25 |
|
Peter Makholm wrote:
>> jeg skal finde linie antal i en fil og gemme dette tal som en variable.
>> dette er hvad jeg gør:
>>
>> wc -l mellemvaerdi >$variable
>
> VAR = `wc -l filnavn`
>
> Bemærk at det er bagplinger og ikke almindelige plinger.
Eller alternativt:
VAR = $(wc -l filnavn)
Så behøver man ikke bekymre sig om hvilken type plinger (hedder det
virkeligt plinger?) det er. Læs evt. mere i 'man bash' under emnet
"Command Substitution".
--
PeKaJe
Life is a yo-yo, and mankind ties knots in the string.
| |
Jesper Andersen (17-09-2003)
| Kommentar Fra : Jesper Andersen |
Dato : 17-09-03 10:36 |
|
bruger jeg peter jensens forslag får jeg:
antal og filnavn
men meningen er jeg skal have skrevet antal linier som en variable og ikke
antal linier og filnavnet!!!
"Peter Jensen" <jdogh001@sneakemail.com> wrote in message
news:3f682886$0$13191$edfadb0f@dread15.news.tele.dk...
> Peter Makholm wrote:
>
> >> jeg skal finde linie antal i en fil og gemme dette tal som en variable.
> >> dette er hvad jeg gør:
> >>
> >> wc -l mellemvaerdi >$variable
> >
> > VAR = `wc -l filnavn`
> >
> > Bemærk at det er bagplinger og ikke almindelige plinger.
>
> Eller alternativt:
>
> VAR = $(wc -l filnavn)
>
> Så behøver man ikke bekymre sig om hvilken type plinger (hedder det
> virkeligt plinger?) det er. Læs evt. mere i 'man bash' under emnet
> "Command Substitution".
>
> --
> PeKaJe
>
> Life is a yo-yo, and mankind ties knots in the string.
| |
thomas b (17-09-2003)
| Kommentar Fra : thomas b |
Dato : 17-09-03 10:42 |
|
jeg ved ikke om det er den rigtige måde at gør det på, men her er mit
indslag
VAR=$(wc -l filnavn | awk '{ print $1}')
echo $VAR
mvh
thomas
Jesper Andersen wrote:
> bruger jeg peter jensens forslag får jeg:
> antal og filnavn
>
> men meningen er jeg skal have skrevet antal linier som en variable og ikke
> antal linier og filnavnet!!!
>
>
> "Peter Jensen" <jdogh001@sneakemail.com> wrote in message
> news:3f682886$0$13191$edfadb0f@dread15.news.tele.dk...
>
>>Peter Makholm wrote:
>>
>>
>>>>jeg skal finde linie antal i en fil og gemme dette tal som en variable.
>>>>dette er hvad jeg gør:
>>>>
>>>>wc -l mellemvaerdi >$variable
>>>
>>>VAR = `wc -l filnavn`
>>>
>>>Bemærk at det er bagplinger og ikke almindelige plinger.
>>
>>Eller alternativt:
>>
>>VAR = $(wc -l filnavn)
>>
>>Så behøver man ikke bekymre sig om hvilken type plinger (hedder det
>>virkeligt plinger?) det er. Læs evt. mere i 'man bash' under emnet
>>"Command Substitution".
>>
>>--
>>PeKaJe
>>
>>Life is a yo-yo, and mankind ties knots in the string.
>
>
>
| |
Jesper Andersen (17-09-2003)
| Kommentar Fra : Jesper Andersen |
Dato : 17-09-03 10:53 |
|
siger :
bash: awk '{ print $1}': command not found
og jeg har awk funktionen lagt ind
"thomas b" <thomas.bay@jubiimail.dk> wrote in message
news:bk9a9r$2il9$1@news.cybercity.dk...
> jeg ved ikke om det er den rigtige måde at gør det på, men her er mit
> indslag
>
> VAR=$(wc -l filnavn | awk '{ print $1}')
> echo $VAR
>
> mvh
> thomas
>
> Jesper Andersen wrote:
> > bruger jeg peter jensens forslag får jeg:
> > antal og filnavn
> >
> > men meningen er jeg skal have skrevet antal linier som en variable og
ikke
> > antal linier og filnavnet!!!
> >
> >
> > "Peter Jensen" <jdogh001@sneakemail.com> wrote in message
> > news:3f682886$0$13191$edfadb0f@dread15.news.tele.dk...
> >
> >>Peter Makholm wrote:
> >>
> >>
> >>>>jeg skal finde linie antal i en fil og gemme dette tal som en
variable.
> >>>>dette er hvad jeg gør:
> >>>>
> >>>>wc -l mellemvaerdi >$variable
> >>>
> >>>VAR = `wc -l filnavn`
> >>>
> >>>Bemærk at det er bagplinger og ikke almindelige plinger.
> >>
> >>Eller alternativt:
> >>
> >>VAR = $(wc -l filnavn)
> >>
> >>Så behøver man ikke bekymre sig om hvilken type plinger (hedder det
> >>virkeligt plinger?) det er. Læs evt. mere i 'man bash' under emnet
> >>"Command Substitution".
> >>
> >>--
> >>PeKaJe
> >>
> >>Life is a yo-yo, and mankind ties knots in the string.
> >
> >
> >
>
| |
Peter Mogensen (17-09-2003)
| Kommentar Fra : Peter Mogensen |
Dato : 17-09-03 11:08 |
|
Jesper Andersen wrote:
> siger :
> bash: awk '{ print $1}': command not found
Du må have tastet noget forkert så.
Det virker fint her
Peter
| |
thomas b (17-09-2003)
| Kommentar Fra : thomas b |
Dato : 17-09-03 11:12 |
|
hmm
prøv bare at skrive awk i en shell eller gawk
elles tror jeg du har skrevet forkert
mvh
thomas
Jesper Andersen wrote:
> siger :
> bash: awk '{ print $1}': command not found
>
> og jeg har awk funktionen lagt ind
> "thomas b" <thomas.bay@jubiimail.dk> wrote in message
> news:bk9a9r$2il9$1@news.cybercity.dk...
>
>>jeg ved ikke om det er den rigtige måde at gør det på, men her er mit
>>indslag
>>
>>VAR=$(wc -l filnavn | awk '{ print $1}')
>>echo $VAR
>>
>>mvh
>>thomas
>>
>>Jesper Andersen wrote:
>>
>>>bruger jeg peter jensens forslag får jeg:
>>>antal og filnavn
>>>
>>>men meningen er jeg skal have skrevet antal linier som en variable og
>
> ikke
>
>>>antal linier og filnavnet!!!
>>>
>>>
>>>"Peter Jensen" <jdogh001@sneakemail.com> wrote in message
>>>news:3f682886$0$13191$edfadb0f@dread15.news.tele.dk...
>>>
>>>
>>>>Peter Makholm wrote:
>>>>
>>>>
>>>>
>>>>>>jeg skal finde linie antal i en fil og gemme dette tal som en
>
> variable.
>
>>>>>>dette er hvad jeg gør:
>>>>>>
>>>>>>wc -l mellemvaerdi >$variable
>>>>>
>>>>>VAR = `wc -l filnavn`
>>>>>
>>>>>Bemærk at det er bagplinger og ikke almindelige plinger.
>>>>
>>>>Eller alternativt:
>>>>
>>>>VAR = $(wc -l filnavn)
>>>>
>>>>Så behøver man ikke bekymre sig om hvilken type plinger (hedder det
>>>>virkeligt plinger?) det er. Læs evt. mere i 'man bash' under emnet
>>>>"Command Substitution".
>>>>
>>>>--
>>>>PeKaJe
>>>>
>>>>Life is a yo-yo, and mankind ties knots in the string.
>>>
>>>
>>>
>
>
| |
Jesper Andersen (17-09-2003)
| Kommentar Fra : Jesper Andersen |
Dato : 17-09-03 11:47 |
|
det eneste jeg kan se kan være galt kan være evt mellemrum og forkerte '/´/`
men jeg er helt sikker på jeg har skrevet det rigtig...
kan en anden funktion end awk/gawk bruges???
"thomas b" <thomas.bay@jubiimail.dk> wrote in message
news:bk9c1v$2k1q$1@news.cybercity.dk...
> hmm
> prøv bare at skrive awk i en shell eller gawk
> elles tror jeg du har skrevet forkert
>
> mvh
> thomas
>
> Jesper Andersen wrote:
>
> > siger :
> > bash: awk '{ print $1}': command not found
> >
> > og jeg har awk funktionen lagt ind
> > "thomas b" <thomas.bay@jubiimail.dk> wrote in message
> > news:bk9a9r$2il9$1@news.cybercity.dk...
> >
> >>jeg ved ikke om det er den rigtige måde at gør det på, men her er mit
> >>indslag
> >>
> >>VAR=$(wc -l filnavn | awk '{ print $1}')
> >>echo $VAR
> >>
> >>mvh
> >>thomas
> >>
> >>Jesper Andersen wrote:
> >>
> >>>bruger jeg peter jensens forslag får jeg:
> >>>antal og filnavn
> >>>
> >>>men meningen er jeg skal have skrevet antal linier som en variable og
> >
> > ikke
> >
> >>>antal linier og filnavnet!!!
> >>>
> >>>
> >>>"Peter Jensen" <jdogh001@sneakemail.com> wrote in message
> >>>news:3f682886$0$13191$edfadb0f@dread15.news.tele.dk...
> >>>
> >>>
> >>>>Peter Makholm wrote:
> >>>>
> >>>>
> >>>>
> >>>>>>jeg skal finde linie antal i en fil og gemme dette tal som en
> >
> > variable.
> >
> >>>>>>dette er hvad jeg gør:
> >>>>>>
> >>>>>>wc -l mellemvaerdi >$variable
> >>>>>
> >>>>>VAR = `wc -l filnavn`
> >>>>>
> >>>>>Bemærk at det er bagplinger og ikke almindelige plinger.
> >>>>
> >>>>Eller alternativt:
> >>>>
> >>>>VAR = $(wc -l filnavn)
> >>>>
> >>>>Så behøver man ikke bekymre sig om hvilken type plinger (hedder det
> >>>>virkeligt plinger?) det er. Læs evt. mere i 'man bash' under emnet
> >>>>"Command Substitution".
> >>>>
> >>>>--
> >>>>PeKaJe
> >>>>
> >>>>Life is a yo-yo, and mankind ties knots in the string.
> >>>
> >>>
> >>>
> >
> >
>
| |
Peter Mogensen (17-09-2003)
| Kommentar Fra : Peter Mogensen |
Dato : 17-09-03 11:56 |
|
Jesper Andersen wrote:
> det eneste jeg kan se kan være galt kan være evt mellemrum og forkerte '/´/`
> men jeg er helt sikker på jeg har skrevet det rigtig...
> kan en anden funktion end awk/gawk bruges???
Jada .. du kan også bruge sed og perl o.s.v. Der er sikkert tusind måder
at opnå det du vil på.
Men hvis jeg var dig ville jeg finde ud af hvad problemet var her. Hvis
man bare hopper videre hver gang noget, der burde virke ikke virker, så
lærer man aldrig at skrive den slags små shell-scripts.
Peter
| |
Svend-Erik Madsen (17-09-2003)
| Kommentar Fra : Svend-Erik Madsen |
Dato : 17-09-03 13:31 |
|
Den Wed, 17 Sep 2003 11:36:05 +0200, skrev Jesper Andersen:
> bruger jeg peter jensens forslag får jeg:
> antal og filnavn
>
> men meningen er jeg skal have skrevet antal linier som en variable og ikke
> antal linier og filnavnet!!!
Hej
[sem@ibmbox sem]$ export var=`cat config.log|wc -l`
[sem@ibmbox sem]$ echo $var
1874
[sem@ibmbox sem]$
Kan du bruge dette eksempel ?
/sv-e
| |
Peter Makholm (17-09-2003)
| Kommentar Fra : Peter Makholm |
Dato : 17-09-03 10:38 |
|
"Jesper Andersen" <ja1977@yahoo.dk> writes:
> hvis jeg eksekverer følgende:
> var='wc -l mellemvaerdi'
Du lagde ikke mærke til hvilken vej plingerne vender. Det skal være en
løs accent grave (omvendt apostrof) og ikke en apostrof som du bruger.
--
Peter Makholm | I congratulate you. Happy goldfish bowl to you, to
peter@makholm.net | me, to everyone, and may each of you fry in hell
http://hacking.dk | forever
| -- The Dead Past
| |
Claus Alboege (17-09-2003)
| Kommentar Fra : Claus Alboege |
Dato : 17-09-03 10:45 |
|
"Jesper Andersen" <ja1977@yahoo.dk> writes:
[Quoting fixed]
> "Claus Alboege" <csa@csa-net.dk> wrote in message
> news:20030917.111317097260500@csa-net.dk...
>> Peter Makholm <peter@makholm.net> writes:
[snip]
>> % DATE=`date`; echo $DATE
>> Wed Sep 17 11:12:19 CEST 2003
>>
>> > Bemærk at det er bagplinger og ikke almindelige plinger.
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> hvis jeg eksekverer følgende:
> var='wc -l mellemvaerdi'
>
> og skriver :
> echo $var
>
> får jeg følgende:
> wc -l mellemvaerdi
/Claus A
| |
Lars Balker Rasmusse~ (17-09-2003)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 17-09-03 15:07 |
|
"Svend-Erik Madsen" <sem@odin.dyndns.dk> writes:
> [sem@ibmbox sem]$ export var=`cat config.log|wc -l`
> [sem@ibmbox sem]$ echo $var
> 1874
Useless use of cat! Grr.
$ export var=`wc -l < config.log`
--
Lars Balker Rasmussen Consult::Perl
| |
Svend-Erik Madsen (17-09-2003)
| Kommentar Fra : Svend-Erik Madsen |
Dato : 17-09-03 19:32 |
|
Den Wed, 17 Sep 2003 16:06:46 +0200, skrev Lars Balker Rasmussen:
> $ export var=`wc -l < config.log`
Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
/sv-e
| |
Kent Friis (17-09-2003)
| Kommentar Fra : Kent Friis |
Dato : 17-09-03 19:59 |
|
Den Wed, 17 Sep 2003 20:32:09 +0200 skrev Svend-Erik Madsen:
>Den Wed, 17 Sep 2003 16:06:46 +0200, skrev Lars Balker Rasmussen:
>> $ export var=`wc -l < config.log`
>
>Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
>men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
cat er et program der først skal loades ind fra disk, linkes osv. Det
kræver alene 33 systemkald[1], plus alle de instruktioner der ikke er
systemkald. At bede wc om at læse direkte fra filen kræver derimod
kun ET systemkald.
Mvh
Kent
[1] strace cat /dev/null
--
Demokrati er lige som den 29. februar - begge dele forekommer
en gang hver fjerde år.
| |
Jesper Krogh (17-09-2003)
| Kommentar Fra : Jesper Krogh |
Dato : 17-09-03 20:02 |
|
I dk.edb.system.unix, skrev Kent Friis:
> Den Wed, 17 Sep 2003 20:32:09 +0200 skrev Svend-Erik Madsen:
> >Den Wed, 17 Sep 2003 16:06:46 +0200, skrev Lars Balker Rasmussen:
> >> $ export var=`wc -l < config.log`
> >
> >Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
> >men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
>
> cat er et program der først skal loades ind fra disk, linkes osv. Det
> kræver alene 33 systemkald[1], plus alle de instruktioner der ikke er
> systemkald. At bede wc om at læse direkte fra filen kræver derimod
> kun ET systemkald.
Og en shell redirrigering involverer ikke både open og dup
systemkaldende?
--
../Jesper Krogh, jesper@krogh.cc
Jabber ID: jesper@jabbernet.dk
Tøm din hjerne for Linuxviden på http://www.linuxwiki.dk
| |
Kent Friis (17-09-2003)
| Kommentar Fra : Kent Friis |
Dato : 17-09-03 20:04 |
|
Den Wed, 17 Sep 2003 19:01:30 +0000 (UTC) skrev Jesper Krogh:
>I dk.edb.system.unix, skrev Kent Friis:
>> Den Wed, 17 Sep 2003 20:32:09 +0200 skrev Svend-Erik Madsen:
>> >Den Wed, 17 Sep 2003 16:06:46 +0200, skrev Lars Balker Rasmussen:
>> >> $ export var=`wc -l < config.log`
>> >
>> >Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
>> >men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
>>
>> cat er et program der først skal loades ind fra disk, linkes osv. Det
>> kræver alene 33 systemkald[1], plus alle de instruktioner der ikke er
>> systemkald. At bede wc om at læse direkte fra filen kræver derimod
>> kun ET systemkald.
>
>Og en shell redirrigering involverer ikke både open og dup
>systemkaldende?
open havde jeg nævnt, og dup skal gøres uanset om man bruger den ene
eller den anden løsning.
Mvh
Kent
--
"A computer is a state machine.
Threads are for people who can't program state machines."
- Alan Cox
| |
Svend-Erik Madsen (17-09-2003)
| Kommentar Fra : Svend-Erik Madsen |
Dato : 17-09-03 20:14 |
|
Den Wed, 17 Sep 2003 19:04:20 +0000, skrev Kent Friis:
Jam, jeg bøjer mig, men ikke i støvet, der er jeg blevet for
gammel til
/sv-e
| |
Hans Joergensen (18-09-2003)
| Kommentar Fra : Hans Joergensen |
Dato : 18-09-03 01:42 |
|
Svend-Erik Madsen wrote:
> Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
> men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
srv:/var/log# time wc -l kern.log
12407 kern.log
real 0m0.027s
user 0m0.010s
sys 0m0.010s
srv:/var/log# time wc -l < kern.log
12408
real 0m0.026s
user 0m0.020s
sys 0m0.010s
srv:/var/log# time cat kern.log|wc -l
12408
real 0m0.038s
user 0m0.020s
sys 0m0.020s
Såmend er der en lille forskel.
// Hans
--
Sidevogn til Russer MC (Ural/Dnepr) samt militær-udstyr til denne
købes for rimelig pris!
| |
Jesper Krogh (18-09-2003)
| Kommentar Fra : Jesper Krogh |
Dato : 18-09-03 05:47 |
|
I dk.edb.system.unix, skrev Hans Joergensen:
> Svend-Erik Madsen wrote:
> > Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
> > men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
>
> srv:/var/log# time wc -l kern.log
> 12407 kern.log
>
> real 0m0.027s
> user 0m0.010s
> sys 0m0.010s
> srv:/var/log# time wc -l < kern.log
> 12408
>
> real 0m0.026s
> user 0m0.020s
> sys 0m0.010s
> srv:/var/log# time cat kern.log|wc -l
> 12408
>
> real 0m0.038s
> user 0m0.020s
> sys 0m0.020s
>
> Såmend er der en lille forskel.
Damn, jeg tager hatten af..
--
../Jesper Krogh, jesper@krogh.cc
Jabber ID: jesper@jabbernet.dk
Tøm din hjerne for Linuxviden på http://www.linuxwiki.dk
| |
Lars Balker Rasmusse~ (17-09-2003)
| Kommentar Fra : Lars Balker Rasmusse~ |
Dato : 17-09-03 21:24 |
|
"Svend-Erik Madsen" <sem@odin.dyndns.dk> writes:
> Den Wed, 17 Sep 2003 16:06:46 +0200, skrev Lars Balker Rasmussen:
>> $ export var=`wc -l < config.log`
>
> Det er to tegn der skiller os, "ca[t|<]",ikke at jeg er uenig med dig,
> men kan du påvise performance gevinst ved at bruge "<" i stedet for cat ?
Udover de relativt ligegyldige tekniske detaljer de andre har postet,
vil jeg da lige henvise til
http://rhols66.adsl.netsonic.fi/era/unix/award.html
--
Lars Balker Rasmussen Consult::Perl
| |
|
|