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

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

Månedens bedste
Årets bedste
Sidste års bedste