|
| Søger script tip Fra : Poul Hansen |
Dato : 06-09-01 16:59 |
|
Scenarie:
Modtager en fil med stor længde pr. record (alm. text), f.eks. op til 1000
char's.
Skal reformatere denne, så linierne knækker efter 200 char's.
Dvs. hvis f.eks. en linie er 867 char's, skal jeg først 'knække' de første
200, dernæst op til 400, 600, 800 og rest i sidste (nye) record bliver så
67 char's. Ialt 5 nye records.
Kan ikke rigtig finde den rigtige angrebs-vinkel ?
Ville værdsætte gode ideer ???
Poul
| |
Knud Haugaard Sørens~ (06-09-2001)
| Kommentar Fra : Knud Haugaard Sørens~ |
Dato : 06-09-01 17:06 |
|
Det lyder som et job for awk eller sed
Poev at paa
man awk
og
man sed
Knud
Poul Hansen wrote:
>
> Scenarie:
>
> Modtager en fil med stor længde pr. record (alm. text), f.eks. op til 1000
> char's.
> Skal reformatere denne, så linierne knækker efter 200 char's.
> Dvs. hvis f.eks. en linie er 867 char's, skal jeg først 'knække' de første
> 200, dernæst op til 400, 600, 800 og rest i sidste (nye) record bliver så
> 67 char's. Ialt 5 nye records.
> Kan ikke rigtig finde den rigtige angrebs-vinkel ?
> Ville værdsætte gode ideer ???
>
> Poul
--
Do you have a freelance which include Web Design, Programming or Linux ?
Then send me a email!
| |
Claus Rasmussen (06-09-2001)
| Kommentar Fra : Claus Rasmussen |
Dato : 06-09-01 17:33 |
|
Poul Hansen wrote:
> Modtager en fil med stor længde pr. record (alm. text), f.eks. op til 1000
> char's.
> Skal reformatere denne, så linierne knækker efter 200 char's.
perl -pe 's/(.{200})/$1\n/g' < fil
-Claus
| |
Peter Dalgaard BSA (06-09-2001)
| Kommentar Fra : Peter Dalgaard BSA |
Dato : 06-09-01 17:47 |
|
Claus Rasmussen <clr@cc-consult.dk> writes:
> Poul Hansen wrote:
>
> > Modtager en fil med stor længde pr. record (alm. text), f.eks. op til 1000
> > char's.
> > Skal reformatere denne, så linierne knækker efter 200 char's.
>
> perl -pe 's/(.{200})/$1\n/g' < fil
Får du ikke en ekstra blank linje hvis der er en linje med præcis
k*200 tegn i?
--
O__ ---- Peter Dalgaard Blegdamsvej 3
c/ /'_ --- Dept. of Biostatistics 2200 Cph. N
(*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918
~~~~~~~~~~ - (p.dalgaard@biostat.ku.dk) FAX: (+45) 35327907
| |
Claus Rasmussen (07-09-2001)
| Kommentar Fra : Claus Rasmussen |
Dato : 07-09-01 06:13 |
|
Peter Dalgaard BSA wrote:
> Claus Rasmussen <clr@cc-consult.dk> writes:
>
>> perl -pe 's/(.{200})/$1\n/g' < fil
>
> Får du ikke en ekstra blank linje hvis der er en linje med præcis
> k*200 tegn i?
Jo. Det har du faktisk ret i.
-Claus
| |
Poul Hansen (06-09-2001)
| Kommentar Fra : Poul Hansen |
Dato : 06-09-01 20:17 |
|
Jeg må nok erkende, at jeg er helt blank mht. Perl
Så det er lidt svært at gennemskue. Har forsøgt dette i en DOS-perl. Det ser
ikke ud til at virke ?? Hvad hvis jeg iøvrigt gerne vil have resultat i fil
og ikke stdout ??
Poul
"Claus Rasmussen" <clr@cc-consult.dk> wrote in message
news:9n88fj$f61$1@sunsite.dk...
> Poul Hansen wrote:
>
> > Modtager en fil med stor længde pr. record (alm. text), f.eks. op til
1000
> > char's.
> > Skal reformatere denne, så linierne knækker efter 200 char's.
>
> perl -pe 's/(.{200})/$1\n/g' < fil
>
> -Claus
>
>
| |
Claus Rasmussen (07-09-2001)
| Kommentar Fra : Claus Rasmussen |
Dato : 07-09-01 06:22 |
|
Poul Hansen wrote:
> Jeg må nok erkende, at jeg er helt blank mht. Perl
Det har sådan set ikke så meget med perl at gøre. Det handler mere om at
kende regulære udtryk (RE). Det er grundlaget for et væld at smarte
værktøjer og kommandoer på en linux maskine.
> Så det er lidt svært at gennemskue. Har forsøgt dette i en DOS-perl. Det
> ser ikke ud til at virke ?? Hvad hvis jeg iøvrigt gerne vil have resultat
> i fil og ikke stdout ??
Hvis du gerne vil have output i en fil, omdirrigerer du bare stdout til
filen. Nøjagtigt som input også omdirrigeres fra en fil:
perl -pe 's/(.{200})/$1\n/g' < inputfil > outputfil
Men brug hellere fold som Rasmus foreslår. Der er et problem med udtrykket
som gør, at du får to blanke linier til sidst, hvis der er et præcist 200
tegn (eller et multiplum heraf) i filen.
-Claus
| |
Poul Hansen (07-09-2001)
| Kommentar Fra : Poul Hansen |
Dato : 07-09-01 08:01 |
|
Ved ikke havad der gik galt . Har nu arbejdet lidt med dit script ! OG det
virker. Det er faktisk genialt !
Vil dog lige kigge på 'fold' - da det virker 'enklere'
Tak for hjælpen
Poul
> Det har sådan set ikke så meget med perl at gøre. Det handler mere om at
> kende regulære udtryk (RE). Det er grundlaget for et væld at smarte
> værktøjer og kommandoer på en linux maskine.
>
>
> Hvis du gerne vil have output i en fil, omdirrigerer du bare stdout til
> filen. Nøjagtigt som input også omdirrigeres fra en fil:
>
> perl -pe 's/(.{200})/$1\n/g' < inputfil > outputfil
>
| |
Rasmus Toftdahl Oles~ (06-09-2001)
| Kommentar Fra : Rasmus Toftdahl Oles~ |
Dato : 06-09-01 22:17 |
|
Claus Rasmussen <clr@cc-consult.dk> writes:
> Poul Hansen wrote:
>
> > Modtager en fil med stor længde pr. record (alm. text), f.eks. op til 1000
> > char's.
> > Skal reformatere denne, så linierne knækker efter 200 char's.
>
> perl -pe 's/(.{200})/$1\n/g' < fil
>
Eller fold:
fold -w 200 <fil>
--
Best Regards / Venlig Hilsen
Rasmus Toftdahl Olesen
halfdan@halfdan.dyndns.org
http://halfdan.dyndns.org
| |
|
|