/ 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
Mangler shell funktion til parserering af ~
Fra : Jan Birk


Dato : 18-02-09 16:11

Forestiller mig noget ala

parsefile(filnavn.csv) {
DELIMITER=,
TEKST_SURROUND="
INPUT=filnavn.csv
....
....
arbejde arbejde ...
output..
return array FELT[nr]
}


Findes der mon noget færdigt i den stil?

Pft

/Jan

 
 
Peter Mogensen (18-02-2009)
Kommentar
Fra : Peter Mogensen


Dato : 18-02-09 17:17

Jan Birk wrote:
> Forestiller mig noget ala
>
> parsefile(filnavn.csv) {
> DELIMITER=,
> TEKST_SURROUND="
> INPUT=filnavn.csv
> ...
> ...
> arbejde arbejde ...
> output..
> return array FELT[nr]
> }
>
>
> Findes der mon noget færdigt i den stil?
>

man Text::ParseWords

Jan Birk (18-02-2009)
Kommentar
Fra : Jan Birk


Dato : 18-02-09 18:17

> man Text::ParseWords

Tak, men er det nu også en shell ting? Min shell (bash) siger jo bare;
----
jb@jb-laptop$ man Text::ParseWords
No manual entry for Text::ParseWords
----
Jeg er ikke familiær med perl, hvad det jo ligner. Og jeg har ikke perl
der hvor jeg skal bruge scriptet

Men hvis jer tager fejl, må jeg jo blive "lært" og betale lære penge

/Jan

Peter Mogensen (18-02-2009)
Kommentar
Fra : Peter Mogensen


Dato : 18-02-09 20:04

Jan Birk wrote:
>> man Text::ParseWords
>
> Tak, men er det nu også en shell ting? Min shell (bash) siger jo bare;
> ----
> jb@jb-laptop$ man Text::ParseWords
> No manual entry for Text::ParseWords
> ----
> Jeg er ikke familiær med perl, hvad det jo ligner. Og jeg har ikke perl
> der hvor jeg skal bruge scriptet

Ahh... bummer...

> Men hvis jer tager fejl, må jeg jo blive "lært" og betale lære penge

Nej, du tager ikke fejl. Jeg tog bare chancen og satsede på at du var
parat til at skrive "perl -e" i dit shell-script


Michael Rasmussen (18-02-2009)
Kommentar
Fra : Michael Rasmussen


Dato : 18-02-09 18:26

On Wed, 18 Feb 2009 18:16:44 +0100
Jan Birk <jan.birk@ivalid.domain.null> wrote:

> No manual entry for Text::ParseWords
perldoc Text::ParseWords
> Jeg er ikke familiær med perl, hvad det jo ligner. Og jeg har ikke perl
> der hvor jeg skal bruge scriptet
>
Et Unix eller Unix lignende OS uden Perl!
Det vil jeg gerne høre mere om, for et sådan er jeg ikke støt på siden
begyndelsen af 1990'erne.

--
Hilsen/Regards
Michael Rasmussen
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Michael Rasmussen (18-02-2009)
Kommentar
Fra : Michael Rasmussen


Dato : 18-02-09 19:45

On Wed, 18 Feb 2009 19:00:34 +0100
Jan Birk <jan.birk@ivalid.domain.null> wrote:

>
> Men hvis det er nemmere at bruge perl, så må jeg jo igang. Havde dog
> håbet på et shell script.
Nu er shell scripts jo ikke konstrueret med dette formål; det var jo
netop derfor, Larry Wall opfandt Perl

Findes der Python eller PHP installeret på dyret?
Eller lex, bison og yacc?

--
Hilsen/Regards
Michael Rasmussen
http://pgp.mit.edu:11371/pks/lookup?op=get&search=0xE3E80917
A computer is like air conditioning: it becomes useless when you open
windows.


Klaus Alexander Seis~ (19-02-2009)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 19-02-09 01:27

Jan Birk skrev:

> Forestiller mig noget ala
>
> parsefile(filnavn.csv) {
> DELIMITER=,
> TEKST_SURROUND="
> INPUT=filnavn.csv
> ...
> ...
> arbejde arbejde ...
> output..
> return array FELT[nr]
> }
>
>
> Findes der mon noget færdigt i den stil?

Du burde kunne komme en del af vejen med awk.

Fx
   awk -F, '{print $2}'

for at vise felt nummer to i en kommaopdelt fil.

Hvis du ikke ønsker at benytte nogle externe programmer overhovedet,
men udelukkende sh, kan man måske lege med IFS:

   #!/bin/sh

oldIFS="${IFS}" ; IFS=',
'
while read felt1 felt2 resten
do
echo "${felt2}"
done
IFS="${oldIFS}"

# eof

eller noget i den retning.

Mvh,

--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/

Jan Birk (19-02-2009)
Kommentar
Fra : Jan Birk


Dato : 19-02-09 08:21

> Hvis du ikke ønsker at benytte nogle externe programmer overhovedet,
> men udelukkende sh, kan man måske lege med IFS:

Jo det gør ikke noget;

>
>    #!/bin/sh
>
> oldIFS="${IFS}" ; IFS=',
> '
> while read felt1 felt2 resten
> do
> echo "${felt2}"
> done
> IFS="${oldIFS}"
>
> # eof
>
> eller noget i den retning.

Det ser fint ud. Men det håndterer ikke f.eks. kommaer i tekstfelter
f.eks. "teskst , , , tekst"

/Jan

Klaus Alexander Seis~ (19-02-2009)
Kommentar
Fra : Klaus Alexander Seis~


Dato : 19-02-09 10:53

Jan Birk skrev:

> Det ser fint ud. Men det håndterer ikke f.eks. kommaer i
> tekstfelter f.eks. "teskst , , , tekst"

Korrekt, så skal man have fat i andre metoder. Python har et
csv-modul der kan tage hånd om den slags:

· http://docs.python.org/library/csv.html

Mvh,

--
Klaus Alexander Seistrup
http://klaus.seistrup.dk/

Jan Birk (19-02-2009)
Kommentar
Fra : Jan Birk


Dato : 19-02-09 08:23

Tak til alle.

Det ser ud som om jeg må have perl ind på maskine og bruge det.

/Jan

Frank Damgaard (19-02-2009)
Kommentar
Fra : Frank Damgaard


Dato : 19-02-09 13:50

Jan Birk skrev:
> Tak til alle.
>
> Det ser ud som om jeg må have perl ind på maskine og bruge det.
>

Ja, se evt. på

pakken Text::CSV_XS
http://search.cpan.org/~hmbrand/Text-CSV_XS-0.60/CSV_XS.pm

den plejer jeg at anvende (men der findes alternativer)

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

Månedens bedste
Årets bedste
Sidste års bedste